ファイル履歴(最近使ったアイテム)をリフレッシュする

「最近使ったアイテム」の一覧から、無効な項目を削除するマクロです。一覧には、移動や削除などによって現在は存在しないファイルもリストアップされています。

編集ログを残すより、クリックして実際に開けるものだけを表示させたい場合に使います。

ファイルが見つからないエラー

マクロコード

ExcelとWordで仕組みは同じなのですが、プロパティなどが一部異なるので、それぞれ用のコードを掲載します。

Excel用 ファイル履歴のリフレッシュ

Sub ブック履歴をリフレッシュ()

    Dim oRF As RecentFile
    Dim sPath As String
    
    For Each oRF In Application.RecentFiles
        sPath = oRF.Path
        If Left(sPath, 5) <> "https:" Then
            If Dir(oRF.Path, vbNormal) = "" Then
                oRF.Delete
            End If
        End If
    Next oRF
End Sub

Word用 ファイル履歴のリフレッシュ

Sub 文書履歴をリフレッシュ()
    Dim oRF As RecentFile
    Dim sPath As String
    
    For Each oRF In Application.RecentFiles
        If InStr(oRF.Path, "https:\") = 0 Then
            sPath = oRF.Path & "\" & oRF.Name
            If Dir(sPath, vbNormal) = "" Then
                oRF.Delete
            End If
        End If
    Next oRF
End Sub

解説

RecentFile オブジェクト

最近使ったアイテムの各個は、RecentFileオブジェクトに対応します。

オブジェクトからファイルパスを取得して存在確認をし、存在しなければオブジェクトを削除する、という仕組みです。

ファイルのフルパスの取得がExcelとWordとで少し異なります。Pathプロパティの値がExcelではファイルのパスですが、WordではフォルダーパスなのでNameプロパティと合わせる必要があります。
ファイルの存在確認とクラウド上のパス

Dir関数でファイルの存在確認をしています。

ただ、昨今はOneDriveやSharePointなどのクラウド上のファイルパスも含まれていることもありますが、それらのパスはDir関数では処理できません。クラウド上ファイルの存在確認の手段はありますが、Dir関数のような手軽なものではないので、このマクロでは操作の対象外としています。

クラウド上のファイルパスの持ち方もExcelとWordで異なるようです。Excelでは「https://~」ですが、Wordでは「<ドキュメントパス>\https:\~」になります。

 

タイトルとURLをコピーしました