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

时间:2010-01-22 14:05:02

标签: excel vba excel-vba excel-2007 ribbon

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

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

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

谢谢...

3 个答案:

答案 0 :(得分:3)

要清除最近使用的文件列表,而不是弄乱用户的设置,以下代码将起作用:

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集合中删除其中一个条目,其余文件的所有索引都会更改。这样,每次循环时,您都将删除集合中的最后一项。

此外,由于此集合是Base 1而不是Base 0,因此集合中的最后一项是Application.RecentFiles.Count而不是.RecentFiles.Count-1。

我只是喜欢Excel中的所有那些小不一致...... :)

答案 1 :(得分:2)

没有用于隐藏最近使用的文件列表的直接机制。但是,可以通过将Application.RecentFiles.Maximum设置为零(0)来完成。

有关详细讨论,请参阅Ron de Bruin的Change the Ribbon in Excel 2007,并向下滚动到标题为“Dictator示例和隐藏MRU('最近使用的')文件列表”的部分,其代码由Jim Rech提供

这也可以手动完成。请参阅:How to Clear and Delete Recent Documents List in Office 2007 (Word, Excel, PowerPoint)

- 迈克

答案 2 :(得分:0)

要从recentfiles列表中清除activeworkbook,请使用以下命令:

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

此致 理查德