VBAでフォルダを最前面に表示する方法を紹介します。
フォルダを最前面に表示するには、通常サイズと最大サイズを選択できます。
上記について、コード解説もしていきます。
目次
エクセルにフォルダパスを入力する
この事例では、エクセルのB2で指定したフォルダパスを最前面に表示します。
ここではエクセルのB2にフォルダパスを入力していますが、VBAプログラムのなかに入力しておいても問題ありません。
VBAで指定したフォルダを最前面に表示
今回紹介するプログラムの概要は以下です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
'プログラム0|変数設定の指定 Option Explicit 'プログラム1|プログラム開始 Sub OpenFolder() 'プログラム2|シート設定 Dim ws As Worksheet Set ws = Worksheets("Sheet1") 'プログラム3|フォルダ指定 Dim folderpath As String folderpath = ws.Range("B2").Value 'プログラム4|フォルダを開く(最前面に表示) '通常サイズ Shell "C:\Windows\Explorer.exe " & folderpath, vbNormalFocus '最大サイズ Shell "C:\Windows\Explorer.exe " & folderpath, vbMaximizedFocus 'プログラム5|プログラム終了 End Sub |
それでは、以下でプログラムを詳しく説明していきます。
プログラム0|変数宣言の指定
1 |
Option Explicit |
「Option Explicit」とは、変数宣言を強制するためのものです。
予期しないエラーを防止できるため「Option Explicit」を入力することを習慣化することを推奨しています。
詳しい説明は以下のページで紹介しています。
プログラム1|プログラム開始
1 |
Sub OpenFolder() |
「Sub OpenFolder()」のプログラムを開始することを意味します。
VBAではプロシージャという単位でプログラムを呼び出します。
プロシージャの構文は下記となっています。
1 2 3 |
Sub プロシージャ名() '実行プログラム End Sub |
「Sub」で始まり「End Sub」で終わります。
「Sub XXXX」の「XXXX」の部分がプロシージャ名です。
このプロシージャ名はあらゆる文字(アルファベット、ひらがな、漢字、数字など)が使用可能です。
ただし、プロシージャ名の先頭は数字を入れるとエラーとなります。
あとで見たときに、「何のプログラムだったのか?」とならないようにするためです。
なお、「()」の中には何も記入されていません。これは引数なしという意味です。
初心者の内は、引数ということが分からなくてもVBAプログラムを書くことは可能です。
興味があれば、「VBA 引数」で検索して調べてみてください。
プログラム2|シート設定
1 2 |
Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("Sheet1") |
「Sheet1」をwsとして扱います。
プログラム3|フォルダ指定
1 2 |
Dim folderpath As String folderpath = ws.Range("B2").Value |
folderpathを文字列型で変数定義します。
セルB2の値をfolderpathとして取得します。
folderpathの検証結果を出力してみます。
Debug.Printでの検証結果
1 2 3 4 5 6 |
Dim folderpath As String folderpath = ws.Range("B2").Value Debug.Print "folderpath: " & folderpath >>>folderpath: D:\Website_パソコンスキルの教科書\305_VBA_フォルダ\13_フォルダを開いてアクティブにする\VBA |
folderpathは上記の値を取得していることが分かりました。
プログラム4|フォルダを開く(最前面に表示)
1 2 3 4 5 |
'通常サイズ Shell "C:\Windows\Explorer.exe " & folderpath, vbNormalFocus '最大サイズ Shell "C:\Windows\Explorer.exe " & folderpath, vbMaximizedFocus |
フォルダを開いて最前面に表示します。
ここではShell関数を使います。Shell関数は以下のような引数を使います。
1. pathname
pathnameは必須項目で、実行したいプログラムの名前を入力します。
ここでは「Cドライブのウィンドウエクスプローラー(フォルダ)をexeファイル」から「folderpathで指定したフォルダを開く」ようにしています。
2. [windowstyle]
windowstyleは省略可能で、ウィンドウの表示形式を指定します。
以下の引数で、表示形式が変わります。
vbNormalFocus:通常サイズでかつ位置も通常の場所に表示する←
vbMinimizedFocus:最小サイズ(タブ)に表示
vbMaximizedFocus:最大サイズで表示←
vbNormalNoFocus:通常サイズで表示するが、最前面には表示しない
vbMinimizedNoFocus:最小サイズ(タブ)に表示し、最前面に表示しない
最前面への表示は通常サイズと最大サイズの2パターンが該当するので、それらについて紹介します。
通常サイズ:vbNormalFocus
1 |
Shell "C:\Windows\Explorer.exe " & folderpath, vbNormalFocus |
最大サイズ:vbMaximizedFocus
1 |
Shell "C:\Windows\Explorer.exe " & folderpath, vbMaximizedFocus |
これらの方法でフォルダを最前面に表示することができます。
プログラム5|プログラム終了
1 |
End Sub |
プログラム1と対になるプログラムです。プログラム終了させる記載です。
「End Sub」を読み込むと、プログラムが終了します。
類似のVBAプログラム
類似のVBAプログラムとして、Shellを使ってフォルダ内のサブフォルダを全て開くプログラムを紹介しています。
Excel VBAについて詳しく理解したいなら
VBAを活用すると、仕事を効率化できる幅を広げることができます。
たとえば私が実際にVBAを活用して効率化してきた作業は以下の記事で紹介しています。
興味がある人は以下の記事もご覧ください。
動画でも解説しています。
エクセルマクロVBAで出来ることを15の事例で紹介|日常業務をラクにするヒントを見つけよう!
(音声が小さいので、ボリュームを上げてご覧いただければと思います)
VBAでフォルダ操作する事例
VBAでフォルダを操作する事例について、以下で紹介しています。
本サイトで紹介しているVBAプログラムと解説ページ
内容としては、以下について紹介しています。
マクロVBAでセルの値(エクセル)で同じ階層に複数フォルダ一括作成
VBAで複数フォルダを階層別に一括作成|エクセルマクロ×フォルダ操作
VBAでフォルダ内のファイル名を取得!再帰的に階層別にサブフォルダも対象にしてエクセルへ一覧を出力
VBAでフォルダ内のファイル名とサブフォルダを取得し一覧化|拡張子も出力する方法
VBAでサブフォルダ含めフォルダ名とファイル名をテキストファイル出力
VBA×ファイル操作|フォルダ名とファイル名をテキストファイルへ出力
VBAでフォルダ内のフォルダ名・ファイル名を一括変更(まとめて変換)
VBAでShellを使ってフォルダを開く|最前面に表示(アクティブ化)
VBAでダイアログからフォルダ選択し複数ファイル名を取得・表示|エクセルに一覧化
VBAでフォルダ内のエクセルファイルを全てに処理するマクロを紹介
VBAでフォルダ内の全てのエクセルデータを一つにまとめる(集約)
エクセルVBA×Text|テキストファイルの文字列を一斉置換・変換
VBAでフォルダ内のファイル数とフォルダ数をカウントしてExcelに出力
VBAでフォルダ内のファイルや特定フォルダ(ファイルごと)一括削除
VBAで複数フォルダのセットを一括コピー(フォルダの名前変更も実行)
エクセルVBAで請求書PDF作成|複数の取引先別に自動転記(マクロテンプレートあり)
エクセルマクロVBAで資料送付状(Word)の作成・印刷を効率化
VBAでWord議事録メモを作成して最前面表示!ファイルコピーと一覧化で整理整頓
エクセルファイルをダウンロードしてそのままVBAを使えるようにしているので、ぜひご活用ください。