【ExcelVBA】Listboxに表示されたファイル名をクリックしてそのファイルを表示するには

この記事では、Listboxに表示されたファイル名をクリックしてそのファイルを表示する方法についてご説明します。

【動画】Listboxに表示されたファイル名をクリックしてそのファイルを表示する実際の動き

本題に入る前に、まずは次の動画をご覧ください。


Listboxをクリックすると、選択したファイル名(フルパス)が格納されているフォルダが開きます。

フォルダが開くと、Listboxで選択したファイルにフォーカスが当たっている状態になります。

マクロ作成の流れ

STEP.1
Listboxがクリックされたら、ListboxのClickイベント発生させる
Listboxがクリックされたら、ListboxのClickイベント発生させます。
STEP.2
Shell関数を使ってエクスプローラーを起動させて、ファイル名(フルパス)が格納されているフォルダを開く
Shell関数を使ってエクスプローラーを起動させて、ファイル名(フルパス)が格納されているフォルダを開きます。

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週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。

→ TechAcademyの「1週間 無料体験」はこちら