最近使ったアイテムを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プロパティで判定してください。