VBA - Как удалить файл из списка последних документов в Excel 2007? - PullRequest
4 голосов
/ 18 мая 2009

Функция недавних документов в Office действительно полезна, но я переместил файл в новый каталог, и теперь я не могу заставить Excel перестать отображать мне уведомление «Не удается найти этот файл» всякий раз, когда я открываю книгу , Параметры Excel, по-видимому, контролируют только то, сколько из этих «последних документов» отображается, а не сколько фактически сохранено. Поэтому мне интересно, есть ли способ в VBA попасть в список и удалить поврежденный файл.

Ответы [ 6 ]

7 голосов
/ 06 июня 2009

Попробуйте это ...

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
3 голосов
/ 18 мая 2009

Не решение VBA, но откройте Regedit, и вы сможете удалять файлы из списка по желанию.

Список "File MRU" - это то, что вам нужно; для Excel 2007 это под

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

Отрегулируйте номер версии соответствующим образом.

Закройте Excel, удалите запись из файла-нарушителя из найденного там списка и перезапустите.

1 голос
/ 16 июня 2017

Столкнувшись с той же проблемой, я написал этот маленький макрос, удалив все файлы из недавнего списка файлов, которые недоступны:

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
0 голосов
/ 28 ноября 2017

Открыть список последних рабочих книг. Быстро и надежно щелкните правой кнопкой мыши значок и текст документа, который вы хотите удалить из списка. Появляется раскрывающийся список. Это список, который позволяет вам прикрепить элемент к списку. Выберите Удалить из списка. Это работает, но это может быть немного сложно, чтобы рассчитать время правильно. Если вы слишком медленный, он просто попытается открыть файл.

0 голосов
/ 07 ноября 2017

Основываясь на ответе @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

Демо

enter image description here

0 голосов
/ 16 июля 2013

Попробуйте приведенную выше процедуру не как функцию, а как SUB. А во второй строке удалите «-1» в конце, потому что последняя запись больше не будет обрабатываться.

Тогда процедура будет работать правильно.

...