如何使用VBA在Excel功能区中删除最近的文档历史记录

如何使用VBA在Excel功能区中删除最近的文档历史记录,vba,excel,excel-2007,ribbon,Vba,Excel,Excel 2007,Ribbon,如何使用VBA在Excel功能区中删除最近的文档历史记录 我正在使用下面的代码,但它似乎不起作用 Sub Button1_Click() For i = 1 To Application.RecentFiles.Count - 1 Application.RecentFiles(i).Delete Next i End Sub 谢谢 没有直接的机制来隐藏最近使用的文件列表。但是,可以通过将设置为零(0)来实现 有关详细讨论,请参阅Ron de Bruin,并向下

如何使用VBA在Excel功能区中删除最近的文档历史记录

我正在使用下面的代码,但它似乎不起作用

Sub Button1_Click()
    For i = 1 To Application.RecentFiles.Count - 1
        Application.RecentFiles(i).Delete
    Next i
End Sub

谢谢

没有直接的机制来隐藏最近使用的文件列表。但是,可以通过将设置为零(0)来实现

有关详细讨论,请参阅Ron de Bruin,并向下滚动到标题为“独裁者示例和隐藏MRU(“最近使用”)文件列表”的部分,其中包含Jim Rech提供的代码

这也可以手动完成。请参阅:


--Mike

要清除最近使用的文件列表,并且不干扰用户的设置,以下代码将起作用:

originalSetting = Application.RecentFiles.Maximum

Application.RecentFiles.Maximum = 0

Application.RecentFiles.Maximum = originalSetting
这将删除最近的文件,然后将最近文件的最大数量重置为用户最初拥有的数量

如果您只想单独删除它们,您可以按相反的顺序逐步删除它们以完成工作

 Dim i As Integer

For i = Application.RecentFiles.Count To 1 Step -1
    Application.RecentFiles.Item(i).Delete
Next
您需要从集合的底部向上运行,因为一旦从RecentFiles集合中删除其中一个条目,其余文件的所有索引都会更改。这样,每次通过循环时,都会删除集合中的最后一项

而且,由于此集合是以1为基数而不是以0为基数,因此集合中的最后一项是Application.RecentFiles.Count,而不是.RecentFiles.Count-1


我只是喜欢Excel中那些小小的不一致之处:)

要从最近文件列表中清除Active工作簿,请使用以下命令:

Sub DeleteFileFromRecentFiles()
    Dim i As Integer
    For Each RecentFile In Application.RecentFiles
        If ActiveWorkbook.Name = RecentFile.Name Then
            i = i + 1
            Application.RecentFiles.Item(i).Delete
        End If
    Next
End Sub
真诚地,
Richard

Base 1集合/数组:事实上,我认为这与Excel无关,它是Visual Basic语言家族的一项功能(在VB转到.NET时发生了变化)