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で起動時にフォームのみ表示する

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

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

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

Excelで開発タブを表示する

ExcelでVBAをつくるときに「開発」メニューを使いますが、最初は表示されていません。 「開発」を表示するには、Excelを起動して、「ファイル」→「オプション」→「リボンのユーザー設定」から、「リ…続きを読む

Excel VBAで「はい」「いいえ」の条件分岐をする

Excel VBAでメッセージ(質問)を表示して、ユーザに「はい」「いいえ」の選択をさせて、その結果で処理を分岐させる方法です。 if文による条件分岐 条件分岐には以下のようなif文を使います。 If…続きを読む

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

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

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

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

Excelのフォームのタブオーダーを指定する

Excelでフォームを設定し、部品を複数配置していると、タブキーやEnterキーを押すと次の部品にフォーカスを飛ばすことができます。 この順序が意図したとおりでない場合に、自分で設定する方法を調べまし…続きを読む

Excelで数式のみをコピーする

Excelで数式だけをコピーして貼り付ける方法です。 以下のように、セルC6に入力されている数式を、セルD6にコピーしたい場合、セルの右下をドラッグしてD6に持っていくと枠線やセルの背景色などの余計な…続きを読む

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

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

This website stores cookies on your computer. These cookies are used to provide a more personalized experience and to track your whereabouts around our website in compliance with the European General Data Protection Regulation. If you decide to to opt-out of any future tracking, a cookie will be setup in your browser to remember this choice for one year.

Accept or Deny