VBAを利用してフォルダを開くことができます。
この記事ではVBAのShell関数を利用して
フォルダを開く方法を、ご紹介します。
Shell関数でフォルダを開く
Shell関数を利用してフォルダを開くコードです。
1 2 3 4 5 6 7 8 9 10 11 12 |
Option Explicit Sub openFolder(path As String) Shell "C:\Windows\Explorer.exe " & path, vbNormalFocus End Sub Sub test_openFolder() Call openFolder("C:\") End Sub |
test_openFolderを実行すると、Cドライブをエクスプローラーで開きます。
Shell関数から“C:\Windows\Explorer.exe “で
Windowsのエクスプローラーを起動しています。
その後に開きたいフォルダのパスを結合してコードを実行しています。
openFolderに渡す文字列を変えることによって
開くフォルダを変えることができます。
サブフォルダも含めて開く
サブフォルダを含めてエクスプローラーでフォルダを開くにはFileSystemObjectを利用します。
FileSystemObjectを利用するにはMicrosoft Scripting Runtimeに参照設定を行う必要があります。
参照設定の方法については下記を参照してください。

VBAで参照設定を行う
VBAに標準で含まれていない機能があるときは
外部のライブラリを参照して、外部ライブラリ内の機能を利用します。
この外部ライブラリの機能を利用する設定を、参照設定と言います。
test内にフォルダが全部で6つあります。
test1とtest2はそれぞれ、サブフォルダを2つずつ持ちます。
この6つのフォルダをShell関数を利用して、すべて開いてみます。
1 2 3 4 5 6 7 |
C:\test ├─test1 │ ├─test1-1 │ └─test1-2 └─test2 ├─test2-1 └─test2-2 |
大量のフォルダをShell関数で開くと、画面がエクスプローラーで
埋め尽くされてしまうので、事前にフォルダ数を確認してください。
埋め尽くされてしまうので、事前にフォルダ数を確認してください。
サブフォルダを含めて、すべてのフォルダをエクスプローラーで開くコードです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Option Explicit Sub openSubFolders(path) Dim fso As New FileSystemObject Dim subFolder As Folder For Each subFolder In fso.GetFolder(path).SubFolders Shell "C:\Windows\Explorer.exe " & subFolder.path, vbNormalFocus Call openSubFolders(subFolder.path) Next End Sub Sub testOpenSubFolders() Call openSubFolders("C:\test") End Sub |
コードを実行するとサブフォルダを含めて、エクスプローラーでフォルダを開きます。
コメント
ありがとうございました。わかりやすい解説助かりました。
ハナウタさん、コメントありがとうございます。お役に立てて良かったです。