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:ハイパーリンクで別ファイルを開く

Excelにおいて、別ファイルにハイパーリンクを付けて、リンクをクリックすると指定したファイルが開くようにします。 通常のハイパーリンクの作成の場合だと、セルの上で右クリック→「リンク」をクリックして…続きを読む

Excel VBAでコマンドプロンプトを起動しコマンドを実行する

Excel VBAでコマンドプロンプトを起動し、かつコマンドを実行する方法です。 コマンドプロンプトの実行 コマンドプロンプトを実行するには以下のように書きます。 CreateObject (&#82…続きを読む

Excelで起動時にフォームのみ表示する

Excelで起動時にフォームを表示し、Excelそのものの表画面は非表示にする方法です。 起動時にフォームを表示する 「開発」→「コードの表示」から「Microsoft Visual Basic fo…続きを読む

Excel VBA:メールを送信する

Excel VBAからメールを送信するボタンをつくります。 パスワードロックをかけたブックを利用していて、パスワードがわからなくなったらメールを送信してパスワードを教える機能を付けようと思い、調べまし…続きを読む

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

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

Excel VBAで他のプログラムを実行し処理が終わってから次の処理をする

CreateObject(“WScript.Shell”).Runを使って他のプログラムを実行する場合、デフォルトだと起動したプログラムの処理が終わる前に次の処理に移ってしまい…続きを読む

Excel:改行を含むテキストを置換する

Microsoft Excelで、セルの中で改行しているテキストを置換する方法です。 以下のように、 あああ いいい という改行を含むテキストを「おおお」というテキストに置換します。 改行を含めたテキ…続きを読む

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

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

Excel:保存先の場所を常にデスクトップにする

Microsoft Excel2019で新規に保存をしようとするとOne Driveなどが最初に候補にあがってきてしまい、コンピュータ上に保存したいときに、いちいちデスクトップを指定するのに手間取りま…続きを読む

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

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