【ExcelVBA】Excelのシート上に設置されたWindows Media PlayerとListboxを連携させるには

この記事では、Excelのシート上に設置されたWindows Media PlayerとListboxを連携させる方法についてご説明します。

【動画】Excelのシート上に設置されたWindows Media PlayerとListboxを連携させる実際の動き

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


以上の動画は、Listboxにある動画ファイルのフルパスが表示されている行をクリックすると、Excelのシート上に設置されたWindows Media Playerで自動で動画が再生されます。


以上の動画は、Listboxにある動画ファイルのフルパスが表示されている行をクリックすると、Excelのシート上に設置されたWindows Media Playerで動画が読み込まれて再生停止状態になります。Windows Media Playerの再生ボタンをクリックすると動画が再生されます。

STEP.1
Listboxの行がクリックされたら、選択された行の値を取得する
Listboxの行がクリックされたら、選択された行の値を取得します。
STEP.2
STEP.1で取得した値を、Windows Media PlayerのUrlプロパティに設定する
STEP.1で取得した値を、Windows Media PlayerのUrlプロパティに設定します。
Urlプロパティに動画のフルパスが設定されると、Windows Media Playerでその動画が再生されます。

Excelファイルの例

コントロール各種設置状態

今回は次のExcelファイルを作成しました。

シート上にはWindows Media PlayerとListboxが設置されており、Listboxには動画ファイルがフルパスで表示されている状態です。

このListboxに表示されている動画ファイルの行をクリックすることで、Excelのシート上に設置されたWindows Media Playerにその動画が再生されます。

①Windows Media Playerの設置

Windows Media Playerの設置は次の通りに行います。

①「コントロールの選択」のアイコンをクリックする

「開発」→「挿入」→「コントロールの選択」のアイコンをクリックします。

②「コントロールの選択」画面で「Windows Media Player」を選択してOKボタンをクリックする

「コントロールの選択」画面で「Windows Media Player」を選択してOKボタンをクリックします。

③マウスアイコンが変わる

マウスアイコンが変わります。(私の環境ではマウスアイコンが「+」に変わりました)

④Windows Media Playerを設置する

Windows Media Playerを設置します。

下の通りにWindows Media Playerが設置されました。

以上で「Windows Media Player」の設置が完了しました。

②Listboxの設置及びデータの取り込み(一例)

Listboxの設置及びデータの取り込み(一例)は次の通りに行います。

①「コントロールの選択」のアイコンをクリックする

「開発」→「挿入」→「リストボックス(ActiveX コントロール)」のアイコンをクリックします。

②マウスアイコンが変わる

マウスアイコンが変わります。(私の環境ではマウスアイコンが「+」に変わりました)

③Listboxを設置する

Listboxを設置します。

下の通りにListboxが設置されました。

④Listboxにデータ(動画ファイルのフルパス)を取り込む

Listboxにデータ(動画ファイルのフルパス)を取り込みます。

今回のサンプルデータは、B44からB55のセルにあるデータです。このデータを取り込みます。43行目は(「一覧」の文字列が入っている行)はListboxのヘッダ用です。

Listboxにデータ(動画ファイルのフルパス)を取り込むには、今回はListboxのプロパティのListFillRangeプロパティにデータが存在するセルを参照させます。

おまけで、ヘッダも表示するようColumnHeadsプロパティにTrueを設定しています。

以上の設定でListboxにデータ(動画ファイルのフルパス)が表示されるようになりました。

以上で、Listboxの設置及びデータの取り込み(一例)は完了です。

コードの例

【自動再生】Listboxの動画ファイルをクリックすると動画が自動再生

Option Explicit

Private Sub ListBox1_Click()

    '動画のフルパスを取得する
    WindowsMediaPlayer1.Url = ListBox1.List(ListBox1.ListIndex, 0)
    
End Sub

Private Sub WindowsMediaPlayer1_StatusChange()

    With WindowsMediaPlayer1
        
        'WindowsMediaPlayerのサイズ(縦横)を再設定する※お好みのサイズで
        .Width = 437.25
        .Height = 297

    End With

End Sub

コードの説明

以上のコードは、Listboxの動画ファイルをクリックすると動画が自動再生される処理のコードです。

コードの詳細

Listboxの行をクリックすると3行目のListBox1_Clickイベントが呼び出されます。

6行目では、Listプロパティに、現在指定している(クリックした)行位置と、取得したい列の位置を指定しています。

ListIndexは現在指定した(クリックした)行の位置を返すので、Listプロパティの引数にListIndexを指定しています。

また、1列目の位置である0の値を指定することで、選択した1列目の値を取得することができます。

以上でListboxから、クリックしたファイルのフルパスを取得することができたので、そのフルパスをWindows Media PlayerのUrlプロパティに設定します。

Urlプロパティに動画ファイルのフルパスが設定されると、自動で動画が再生されます。

ただし、自動で動画が再生されるのがイヤなら、「【動画停止状態】Listboxの動画ファイルをクリックすると動画が停止状態」の内容をご覧ください。

また、Windows Media Playerに動画のフルパスがUrlプロパティに設定されるタイミングで、以下のようにWindows Media Playerのサイズが変わってしまうことがあります。

なので、StatusChangeメソッドが呼び出されたタイミング(10行目)で、15行目と16行目でWidthプロパティとHeightプロパティに横幅と縦幅のサイズを設定しています。

横幅と縦幅の設定値はお使いの環境に適した値を設定してください。(ソースコードで使っている値はあくまでサンプル値)

ちなみにStatusChangeメソッドが呼び出されるのは、Urlプロパティに動画のフルパスが設定されたタイミングです。

【動画停止状態】Listboxの動画ファイルをクリックすると動画が停止状態

Option Explicit

Private Sub ListBox1_Click()

    '動画のフルパスを取得する
    WindowsMediaPlayer1.Url = ListBox1.List(ListBox1.ListIndex, 0)
    
    '動画の再生を停止する
    WindowsMediaPlayer1.Controls.stop
    
End Sub

Private Sub WindowsMediaPlayer1_StatusChange()

    With WindowsMediaPlayer1
        
        'WindowsMediaPlayerのサイズ(縦横)を再設定する※お好みのサイズで
        .Width = 437.25
        .Height = 297

    End With

End Sub

コードの説明

以上のコードは、Listboxの動画ファイルをクリックすると動画が読み込まれ、自動再生されずに止めておく処理のコードです。

コードの詳細

Listboxの行をクリックすると3行目のListBox1_Clickイベントが呼び出されます。

6行目では、Listプロパティに、現在指定している(クリックした)行位置と、取得したい列の位置を指定しています。

ListIndexは現在指定した(クリックした)行の位置を返すので、Listプロパティの引数にListIndexを指定しています。

また、1列目の位置である0の値を指定することで、選択した1列目の値を取得することができます。

以上でListboxから、クリックしたファイルのフルパスを取得することができたので、そのフルパスをWindows Media PlayerのUrlプロパティに設定します。

Urlプロパティに動画ファイルのフルパスが設定されると、自動で動画が再生されるので、9行目のStopメソッドで動画の再生を停止状態にします。

Windows Media Playerの再生ボタンをクリックすると動画を再生することができます。

ただし、読み込んだ動画は自動再生したい場合は、「【自動再生】Listboxの動画ファイルをクリックすると動画が自動再生」の内容をご覧ください。

また、Windows Media Playerに動画のフルパスがUrlプロパティに設定されるタイミングで、以下のようにWindows Media Playerのサイズが変わってしまうことがあります。

なので、StatusChangeメソッドが呼び出されたタイミング(13行目)で、18行目と19行目でWidthプロパティとHeightプロパティに横幅と縦幅のサイズを設定しています。

横幅と縦幅の設定値はお使いの環境に適した値を設定してください。(ソースコードで使っている値はあくまでサンプル値)

ちなみにStatusChangeメソッドが呼び出されるのは、Urlプロパティに動画のフルパスが設定されたタイミングです。

動作確認

【自動再生】Listboxの動画ファイルをクリックすると動画が自動再生

マクロ実行前

下の画面はListboxの動画ファイルの行をクリックする前の状態です。

マクロ実行後

クリックされた動画が自動で再生されました。

【動画停止状態】Listboxの動画ファイルをクリックすると動画が停止状態

マクロ実行前

下の画面はListboxの動画ファイルの行をクリックする前の状態です。

マクロ実行後

動画が読み込まれて、停止状態になっています。

再生ボタンをクリックすれば動画を再生することができます。

最後に

本記事では、Excelのシート上に設置されたWindows Media PlayerとListboxを連携させる方法についてご説明しました。

Listboxに動画の置き場を読み込ませておいてその行をクリックすることで動画が再生できるのでちょっとした動画管理ツールとして使うことができます。

動画の管理をしたいという時にExcelのListboxと連携させる使い方は便利だと思うので参考にしてみてくださいね。

プログラミングのスキルを習得するなら

プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。

プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。

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