VBAマクロで特定のファイルを開く処理を自動化した場合、通常そのファイルはExcelの「最近使ったアイテム」の一覧には追加されません。しかし、マクロで使ったファイルを後で手動で開きたい時に、履歴に残っていると非常に便利です。
この記事では、Workbooks.Open
メソッドの**AddToMru
引数**を使い、VBAで開いたブックを意図的に「最近使ったアイテム」(Most Recently Used)の履歴リストに追加する方法を解説します。
Workbooks.Open の AddToMru引数
AddToMru
は、Workbooks.Open
メソッドが持つ引数の一つで、開いたファイルを「最近使ったアイテム」のリストに追加するかどうかをTrue
かFalse
で指定します。
AddToMru:=True
: 開いたブックを履歴に追加します。AddToMru:=False
(または引数を省略した場合): 開いたブックを履歴に追加しません。(VBAからの実行では、これが既定の動作になることが多いです。)
完成したVBAコード
以下が、AddToMru
引数をTrue
に設定してブックを開き、履歴に残すVBAコードです。
Sub OpenBookAndAddToHistory()
' 変数を宣言します
Dim bookPath As String
Dim openedBook As Workbook
' 開きたいブックのパスを指定します
bookPath = ThisWorkbook.Path & "\RecentDataFile.xlsx"
' 念のため、ファイルの存在を確認します
If Dir(bookPath) = "" Then
MsgBox "指定されたファイルが見つかりません: " & bookPath, vbExclamation
Exit Sub
End If
' --- AddToMru引数を「True」に設定してブックを開く ---
' これにより、「最近使ったアイテム」の一覧にこのブックが追加されます
Set openedBook = Workbooks.Open( _
Filename:=bookPath, _
AddToMru:=True)
' 開いたブックを操作します
MsgBox "「" & openedBook.Name & "」を開きました。" & vbCrLf & _
"「最近使ったアイテム」に追加されています。", vbInformation
' 後処理としてブックを閉じます
openedBook.Close SaveChanges:=False
' オブジェクト変数を解放します
Set openedBook = Nothing
End Sub
コードのポイント解説
核心は AddToMru:=True
Set openedBook = Workbooks.Open( _
Filename:=bookPath, _
AddToMru:=True)
このコードのポイントは、Workbooks.Open
メソッドの引数にAddToMru:=True
と明記すること、ただそれだけです。
通常、プログラムからファイルを開いた場合は履歴に残らないことが多いですが、この引数をTrue
に設定することで、ユーザーが手でファイルを開いた時と同じように、Excelに「このファイルを開いた」という履歴を記録させることができます。
なぜこの設定が便利なのか?
- 利便性の向上: マクロが定期的に参照するデータファイルやテンプレートファイルなどを、ユーザーがあとで簡単に見つけて開けるようになります。ファイルを探す手間が省けます。
- 作業の追跡: どのファイルがマクロによってアクセスされたかが履歴に残るため、一種の作業記録としても機能します。
まとめ
VBAで開いたファイルを「最近使ったアイテム」に確実に残したい場合は、Workbooks.Open
メソッドのAddToMru
引数をTrue
に設定します。
Workbooks.Open Filename:="...", AddToMru:=True
これは小さな設定ですが、マクロを使うユーザーの利便性を少しだけ向上させる、気の利いたテクニックです。ブックを開く処理を自動化する際には、この引数を意識してみてください。