はじめに
「このExcelファイルが保存されているフォルダを開いて、関連ファイルも一緒に見たい」 作業をしていると、このように感じることが頻繁にありますよね。
通常は「ファイル」タブから「情報」を選び、表示されたパスをクリックする…という手順が必要ですが、この操作をより素早く、ボタン一つで実行できると便利です。
VBAマクロを使えば、「今開いているブックの保存場所を、一発でエクスプローラーで開く」という動作を簡単に実現できます。この記事では、そのためのシンプルで実用的なコードをご紹介します。
保存先フォルダを開くVBAサンプルコード
このマクロは、まずブックが保存済みかどうかをパスの有無で判定し、保存済みであれば WScript.Shell
オブジェクトを使ってエクスプローラーを起動します。
完成コード
' 現在のブックが保存されているフォルダをエクスプローラーで開く
Sub OpenContainingFolder()
'== 変数を定義します ==
Dim workbookPath As String
' 現在のブックのパスを取得
workbookPath = ActiveWorkbook.Path
'== ブックが保存されているかパスの有無で判定します ==
If workbookPath = "" Then
' 保存されていない場合
MsgBox "このブックはまだ一度も保存されていません。", vbExclamation, "エラー"
Else
' 保存されている場合、WScript.Shellオブジェクトでフォルダを開く
CreateObject("WScript.Shell").Run workbookPath
End If
End Sub
コードの解説
workbookPath = ActiveWorkbook.Path
ActiveWorkbook.Path
プロパティを使って、現在アクティブになっているExcelブックのフォルダパス(例: C:\Users\Username\Documents
)を取得し、変数 workbookPath
に格納しています。
If workbookPath = "" Then
ActiveWorkbook.Path
プロパティは、ブックが一度も保存されていない場合、空の文字列(""
)を返します。この特性を利用して、ブックが保存済みかどうかを判定しています。もしパスが空であれば、メッセージボックスでユーザーに通知し、処理を終了します。
CreateObject("WScript.Shell").Run workbookPath
この一行が、実際にフォルダを開く処理を行っています。
CreateObject("WScript.Shell")
: VBAからWindowsの機能(シェル機能)を操作するためのオブジェクトを生成しています。.Run workbookPath
:Run
メソッドは、指定されたプログラムやファイル、フォルダパスを実行(開く)する命令です。ここでは、先ほど取得したworkbookPath
を渡すことで、そのフォルダをエクスプローラーで開いています。
まとめ
今回は、現在開いているブックの保存場所をエクスプローラーで瞬時に開く、便利なVBAマクロをご紹介しました。
ActiveWorkbook.Path
でブックのフォルダパスを取得できる。- パスが
""
かどうかで、ブックが保存済みかを判定できる。 WScript.Shell
オブジェクトを使えば、VBAからフォルダを開くことができる。
このマクロを個人用マクロブックに保存し、クイックアクセスツールバーに登録しておけば、ファイルを探す手間が大幅に省け、日々の業務がよりスムーズになります。ぜひ、ご自身の環境に取り入れてみてください。