VBA - 如何从excel 2007中的最近文档列表中删除文件?

时间:2009-05-18 19:23:49

标签: excel-vba file ms-office vba excel

Office中最近的文档功能非常有用,但是我将文件移动到了一个新目录,现在每次打开工作簿时都无法让Excel停止使用“找不到此文件”通知。 Excel选项似乎只控制显示这些“最近文档”的数量,而不是实际保存的数量。所以我想知道VBA是否有办法进入列表并删除有问题的文件。

6 个答案:

答案 0 :(得分:7)

试试这个......

Public Function TestIt()
    For i = 1 To Application.RecentFiles.Count - 1
        Dim answer As String
        answer = MsgBox("Delete " & Application.RecentFiles(i).Name, vbYesNo)

        If answer = vbYes Then
            answer = MsgBox("Are you sure?", vbYesNo)
            If answer = vbYes Then
                Application.RecentFiles(i).Delete
            End If
        End If
    Next i
End Function

答案 1 :(得分:3)

不是VBA解决方案,而是打开Regedit,您可以随意从列表中删除文件。

“文件MRU”列表就是你所追求的;对于Excel 2007,它位于

之下
HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\File MRU

相应地调整版本号。

关闭Excel,从找到的列表中删除有问题的文件,然后重新启动。

答案 2 :(得分:1)

面对同样的问题,我编写了这个litte宏,删除了最近文件列表中无法访问的所有文件:

Public Function CheckRecentFiles() As Integer
    Dim i As Integer, c As Integer
    For i = Application.RecentFiles.count To 1 Step -1
        'Debug.Print Application.RecentFiles(i).name
        If Dir(Application.RecentFiles(i).name) = "" Then
            Debug.Print "Delete from recent file list: " & Application.RecentFiles(i).name
            Application.RecentFiles(i).Delete
            c = c + 1
        End If
    Next i
    Debug.Print c & " files removed."
    CheckRecentFiles = c
End Function

答案 3 :(得分:0)

尝试上面的例程不是作为功能而是作为SUB。 并在第二行中删除“-1”,因为最后一个条目不会被处理。

然后例程将正常工作。

答案 4 :(得分:0)

基于@GunnarBernstein的答案,我刚刚将其添加到我的个人宏书中。这对于清理我创建的临时文件以回答SO上的问题非常方便。

Public Sub CleanRecentFiles()
    Const ReviewEntry As Boolean = False
    Dim f As RecentFile
    For Each f In Application.RecentFiles
        If Len(Dir(f.Name)) = 0 Then
            f.Delete
        ElseIf ReviewEntry Then
            Debug.Print f.Name
            Stop
        End If
    Next
End Sub

演示

enter image description here

答案 5 :(得分:0)

打开“最近的工作簿列表”。在要从列表中删除的文档的图标和文本之间快速右键单击鼠标右键。出现一个下拉列表。它是允许您将项目固定到列表的列表。选择从列表中删除。它确实有效,但正确计时可能有点棘手。如果你太慢,它只会尝试打开文件。