Excel VBA:フォルダを開く
Excelでボタンをクリックしたらフォルダを開くようにするVBAです。
Shell EXPLORERPATH & OPENFOLDER , vbNormalFocus
EXPLORERPATH…エクスプローラーのパス
OPENFOLDER…開きたいフォルダのパス
エクスプローラーのパスには、以下を指定します。
C:\Windows\explorer.exe
現在のExcelファイルのあるフォルダを開く
現在のExcelファイルのあるフォルダを開くには、以下のように書きます。
Shell “C:\Windows\explorer.exe ” & ActiveWorkbook.Path , vbNormalFocus
※注意としては、explorer.exe “の部分は、”の前に半角のスペースが入ることです。
フォルダパスを任意の場所にする
Excelファイルのあるフォルダとは別のフォルダを指定したい場合もあるので、パスを「参照」ボタンを押して指定できるようにします。
まず、ワークシート上に「参照」ボタンを配置します。ここでは名前をSelectFolderとします。
Private Sub SelectFolder_Click()
Dim InitialFolder As String
If Worksheets(SHEETNAME).Range(FOLDER) <> “” Then
InitialFolder = Worksheets(SHEETNAME).Range(FOLDER)
Else
InitialFolder = ThisWorkbook.Path
End If
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = InitialFolder & “\”
If .Show = True Then
Worksheets(SHEETNAME).Range(FOLDER) = .SelectedItems(1)
End If
End With
End Sub
SHEETNAME…任意のワークシート名。
FOLDER…任意のセル名(A1など)。
このワークシートのセルに、開きたいフォルダのパスが入力されていれば、そのフォルダを開き、何も入力されていなければ、実行しているEXCELファイルの場所を開きます。
3~7行目までのIf文の処理は、「参照」ボタンを押したときに最初に開くパスを指定する処理です。
「参照」ボタンを押したときに、開くフォルダのパスが空欄だった場合には、現在のExcelファイルの場所を設定します。
なお、パスが間違っていて開けるフォルダがない場合には、デフォルトでマイドキュメントが開きます。
8行目以降は、「参照」ボタンを押して開きたいフォルダを選んで「OK」を押したら、そのパスをセル(FOLDER)にセットします。
次に、「フォルダを開く」ボタンを作ります。名前はOpenLocalFolderにします。
Private Sub OpenLocalFolder_Click()
Dim OpenFolder As String
On Error GoTo ERR_HYOJI
OpenFolder = Worksheets(SHEETNAME).Range(FOLDER)
Shell “C:\Windows\explorer.exe ” & OpenFolder , vbNormalFocus
Exit Sub
ERR_HYOJI:
MsgBox “出力フォルダが存在しません。”
End Sub
4行目、OpenFolderには、SelectFolderで指定したパスをセットします。
これで、SHEETNAMEというシートの、FOLDERとして指定したセルに入力されているパスへのフォルダを開きます。
関連記事