【Excel VBA】マクロで開いたブックを「最近使ったアイテム」の履歴に追加する方法

VBAマクロで特定のファイルを開く処理を自動化した場合、通常そのファイルはExcelの「最近使ったアイテム」の一覧には追加されません。しかし、マクロで使ったファイルを後で手動で開きたい時に、履歴に残っていると非常に便利です。

この記事では、Workbooks.Openメソッドの**AddToMru引数**を使い、VBAで開いたブックを意図的に「最近使ったアイテム」(Most Recently Used)の履歴リストに追加する方法を解説します。


目次

Workbooks.Open の AddToMru引数

AddToMruは、Workbooks.Openメソッドが持つ引数の一つで、開いたファイルを「最近使ったアイテム」のリストに追加するかどうかをTrueFalseで指定します。

  • 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

これは小さな設定ですが、マクロを使うユーザーの利便性を少しだけ向上させる、気の利いたテクニックです。ブックを開く処理を自動化する際には、この引数を意識してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次