HOME技術ExcelExcel VBA:フォルダを開く

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として指定したセルに入力されているパスへのフォルダを開きます。

関連記事

Excel VBAでログイン管理をする

Excelを開いたときに「閲覧のみ」ユーザか「管理者」ユーザかを選び、「閲覧のみ」ユーザの場合にはExcelを閉じるときに保存できないようにして、「管理者」ユーザの場合には、Excelを閉じるときに変…続きを読む

Excel VBA:フィルタを操作して絞り込む

Excel VBAでフィルタ操作をして、行を絞り込みむ方法です。 コード Sub autoFilter(Retsu, Atai) Worksheets(“シート名”).Rang…続きを読む

Excel VBA:特定のシートをコピーして別ブックを生成する

Excel VBAで、特定のシートの値をすべてコピーして、新しい別のExcelブックを生成してそのシートに貼りつけます。 なお、ブックを生成した後は、各自で保存します。 コード Worksheets(…続きを読む

Excel VBA:指定した列を非表示にする

Excel VBAで、予め指定した列を非表示にします。 コード hiddenColumn = Array(3, 4, 5, 6) For i = 0 To UBound(hiddenColumn) W…続きを読む

Excel VBAでシートを並び替える

ExcelVBAでシート内のデータを並び替える方法です。 VBAのコード Endrow  = Worksheets(SheetName).Range(“A1”).End(xlD…続きを読む

Excel VBA:最終行番号を取得する

Excelでデータ管理をしていて、VBAでその全データに対して何らかの処理を行う場合、1行目から最終行までループさせて処理を1行ずつ行う場合には、最終行を取得する必要があります。 今回は、最終行を取得…続きを読む

Exdel VBA:グローバル変数の指定

Excel VBAでグローバル変数を設定する方法です。 プロシージャ内で宣言した変数は、そのプロシージャ内でしか通用しません。 すべてのプロシージャから参照するような定数を設定する場合には、以下のよう…続きを読む

Excel VBAでフィルタの絞り込みを解除する

ExcelVBAを使って、フィルタで絞り込んだ内容を解除する方法です。 VBAコード If Worksheets(“シート名”).FilterMode Then Workshe…続きを読む

Excelで計算式を入れたセルに計算結果が反映されない

Excelで計算式を予め設定していたにもかかわらず、数値を入力してもそのセルに計算結果が反映されない時があります。 通常、自動計算する設定になっていますが、これが手動計算に変わっていることが原因です。…続きを読む

Excel VBAで他のプログラムを実行する際にウィンドウを最小化する

Excel VBAで他のプログラムを実行した際に、実行しているプログラムのウィンドウを最小化表示にする方法です。 CreateObject(“WScript.Shell”).R…続きを読む