和風スパゲティのレシピ

日本語でコーディングするExcelVBA

最近使ったアイテムを追加/削除する - RecentFilesプロパティ

最近使ったアイテムをVBAから編集したいときは、
Application.RecentFilesプロパティを使用します。

最近使ったアイテムにブックを追加する

最近使ったアイテムにブックを追加する場合は、
RecentFiles.Add メソッドを使用します。

Application.RecentFiles.Add 対象ブックのフルパス

 

例えば「VBAで新規作成したファイルを最近使ったアイテムに載せたい」場合は、
以下のコードを実行します。

Dim 作成ブック As Workbook
Set 作成ブック = Workbooks.Add

作成ブック.SaveAs ~~~ ' 名前を付けて保存

Application.RecentFiles.Add 作成ブック.FullName

 

Workbooks.Openで開いたブックを最近使ったアイテムに追加する

Workbooks.Openで開いたファイルを最近使ったアイテムに載せたい場合は、
RecentFilesプロパティを使わずとも、Openメソッドの引数AddToMruを利用できます。

Workbooks.Open("C:~~.xlsx", AddToMru:= True)
    ' ↑ AddToMruにTrueを指定してOpenしたブックは最近使ったアイテムに載る

この機能も覚えておきましょう。

最近使ったアイテムからブックを削除する

最近使ったアイテムの各要素は、RecentFilesプロパティで取得できる、
RecentFilesコレクションの中に格納されています。

その中から削除したいブックをNameプロパティを使って検索し、
Deleteメソッドを実行します。

Sub 最近使ったアイテムから指定ブックを削除する()

    Dim 指定ブックのフルパス As String
    指定ブックのフルパス = ""C:○○~~~~.xlsx"
    
    Dim 最近使ったアイテム As RecentFile
    For Each 最近使ったアイテム In Application.RecentFiles
        If 最近使ったアイテム.Name = 指定ブックのフルパス Then
            最近使ったアイテム.Delete
        End If
    Next

End Sub

RecentFilesコレクションをFor Each文で全件ループして、
Nameが一致するアイテムをDeleteするストレートなコードですね。


この処理よく使う場合は、以下のように関数化しておくのも便利です。

Sub 実行プロシージャ()
    Call 最近使ったアイテムから指定ブックを削除する(ThisWorkbook.FullName)
End Sub

Sub 最近使ったアイテムから指定ブックを削除する(指定ブックのフルパス As String)
    
    Dim 最近使ったアイテム As RecentFile
    For Each 最近使ったアイテム In Application.RecentFiles
        If 最近使ったアイテム.Name = 指定ブックのフルパス Then
            最近使ったアイテム.Delete
        End If
    Next

End Sub

 

直近で登録されたアイテムを削除する

RecentFilesコレクションには各アイテムが登録が新しい順に格納されていますので、
直近のアイテムを削除したい場合は以下のコードでもOKです。

Application.RecentFiles.Item(1).Delete

 
どのアイテムが削除されるか確認してから実行したい場合は、
Nameプロパティで判定してください。