この記事では、Listboxに表示されたファイル名をクリックしてそのファイルを表示する方法についてご説明します。
【動画】Listboxに表示されたファイル名をクリックしてそのファイルを表示する実際の動き
本題に入る前に、まずは次の動画をご覧ください。
Listboxをクリックすると、選択したファイル名(フルパス)が格納されているフォルダが開きます。
フォルダが開くと、Listboxで選択したファイルにフォーカスが当たっている状態になります。
マクロ作成の流れ
Excelファイルの例
今回は次のExcelファイルを用意しました。
Listboxの1列目には項番、2列目にはファイル名が表示されています。
例えばListboxの1行目をクリックすると、1行目のファイルが格納されたフォルダが開きます。
コードの例
Option Explicit Private Sub ListBox1_Click() 'Listboxの2列目のファイル名(フルパス)が格納されているフォルダを開いてファイルにフォーカスが当たっている状態にする Call Shell("explorer.exe /select," & ListBox1.List(ListBox1.ListIndex, 1), vbNormalFocus) End Sub
注目すべきコード①
最初に見て頂きたいのは3行目です。
Private Sub ListBox1_Click()
コードの説明
以上のコードは、Listboxがクリックされた時に呼び出されるClickイベントプロシージャです。
Listboxをクリックしたときに何か処理を行いたい時にClickイベントプロシージャを用意します。
注目すべきコード②
最初に見て頂きたいのは6行目です。
'Listboxの2列目のファイル名(フルパス)が格納されているフォルダを開いてファイルにフォーカスが当たっている状態にする Call Shell("explorer.exe /select," & ListBox1.List(ListBox1.ListIndex, 1), vbNormalFocus)
コードの説明
以上のコードは、Listboxをクリックされた行のファイルが格納されたフォルダが開く処理のコードです。
フォルダを開くには、エクスプローラーを使いたいのですが、マクロからエクスプローラーを起動させるにはShell関数を呼び出します。
Shell関数の引数に「explorer.exe」を指定することでエクスプローラーが起動します。
「explorer.exe」の引数にはListboxでクリックされたファイル名(フルパス)を指定します。
指定することでそのファイルが格納されているフォルダが開きます。
また、「explorer.exe」には「/select」のオプションを指定しています。
「/select」のオプションを指定すると、ファイルにフォーカスが当たっている状態にすることができます。
ファイルが格納されているフォルダが開いても、そのフォルダ内に多くのファイルや格納されていると、ファイルがどこにあるのか分かりにくい場合があります。
ファイルにフォーカスが当たっている状態にしておけば、ファイルがどこにあるのか特定しやすいので今回は「/select」のオプションを指定しています。
動作確認
Listboxクリック前
今回は以下のExcelファイルを用意しました。
Listboxクリック後
Listboxをクリックすると、クリックした行のファイル名が格納されたフォルダが開き、ファイルにフォーカスが当たった状態になります。
最後に
本記事では、Listboxに表示されたファイル名をクリックしてそのファイルを表示する方法についてご説明しました。
Listboxに表示されたファイルにすぐにアクセスしたい時は本記事を参考にしてみてくださいね。
また、イベントプロシージャにはクリック以外にもダブルクリック、KeyDown、KeyUpなど色々あるので、お好みのイベントプロシージャに置き換えて試してみるのも良いと思います。
プログラミングのスキルを習得するなら
プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。
プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。