「最近使ったアイテム」の一覧から、無効な項目を削除するマクロです。一覧には、移動や削除などによって現在は存在しないファイルもリストアップされています。
編集ログを残すより、クリックして実際に開けるものだけを表示させたい場合に使います。
マクロコード
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
オブジェクトに対応します。
オブジェクトからファイルパスを取得して存在確認をし、存在しなければオブジェクトを削除する、という仕組みです。
ファイルの存在確認とクラウド上のパス
Dir
関数でファイルの存在確認をしています。
ただ、昨今はOneDriveやSharePointなどのクラウド上のファイルパスも含まれていることもありますが、それらのパスはDir
関数では処理できません。クラウド上ファイルの存在確認の手段はありますが、Dir
関数のような手軽なものではないので、このマクロでは操作の対象外としています。