【问题标题】:VBA - How do I remove a file from the recent documents list in excel 2007?VBA - 如何从 excel 2007 的最近文档列表中删除文件?
【发布时间】:2017-11-28 20:32:13
【问题描述】:

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

【问题讨论】:

    标签: excel file ms-office vba


    【解决方案1】:

    试试这个...

    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
    

    【讨论】:

    • 这个解决方案对我不起作用。我是不是错过了什么。下面是我正在尝试的代码。 Sub Button1_Click() For i = 1 To Application.RecentFiles.Count - 1 Application.RecentFiles(i).Delete Next i End Sub
    • 你应该改变我从RecentFiles.Count to 1 Step -1
    【解决方案2】:

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

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

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

    相应地调整版本号。

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

    【讨论】:

      【解决方案3】:

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

      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
      

      【讨论】:

        【解决方案4】:

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

        然后例程将正常工作。

        【讨论】:

          【解决方案5】:

          根据@GunnarBernsteinI 的回答,我刚刚将此添加到我的个人宏书中。这对于清理我为回答关于 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
          

          演示

          【讨论】:

            【解决方案6】:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2011-08-13
              • 1970-01-01
              • 1970-01-01
              • 2021-09-03
              • 2016-05-28
              • 2015-10-31
              • 2021-01-17
              • 2018-08-15
              相关资源
              最近更新 更多