この記事では、フォーム上に設置されたWindows Media PlayerとListboxを連携させる方法についてご説明します。
【動画】フォーム上に設置されたWindows Media PlayerとListboxを連携させる実際の動き
本題に入る前に、まずは次の動画をご覧ください。
以上の動画は、Listboxにある動画ファイルのフルパスが表示されている行をクリックすると、Excelのシート上に設置されたWindows Media Playerで自動で動画が再生されます。
以上の動画は、Listboxにある動画ファイルのフルパスが表示されている行をクリックすると、Excelのシート上に設置されたWindows Media Playerで動画が読み込まれて再生停止状態になります。Windows Media Playerの再生ボタンをクリックすると動画が再生されます。
マクロ作成の流れ
Urlプロパティに動画のフルパスが設定されると、Windows Media Playerでその動画が再生されます。
Excelファイルの例
コントロール各種設置状態
今回は次のフォームを作成しました。
フォーム上にはWindows Media PlayerとListboxが設置されており、Listboxには動画ファイルがフルパスで表示されている状態です。
このListboxに表示されている動画ファイルの行をクリックすることで、Excelのシート上に設置されたWindows Media Playerにその動画が再生されます。
①Windows Media Playerの設置
Windows Media Playerの設置は次の通りに行います。
(1)「コントロールの選択」のアイコンをクリックする
「表示」→「ツールボックス」をクリックします。
(2)「ツールボックス」画面を右クリックして「その他のコントロール」をクリックする
「ツールボックス」画面を右クリックして「その他のコントロール」をクリックします。
(3)「コントロールの追加」画面で「Windows Media Player」を選択してOKボタンをクリックする
「コントロールの追加」画面で「Windows Media Player」を選択してOKボタンをクリックします。
(4)「ツールボックス」画面に「Windows Media Player」のアイコンが追加されたのでクリックする
「ツールボックス」画面に「Windows Media Player」のアイコンが追加されたのでクリックします。
(5)フォーム上に「Windows Media Player」を設置する
フォーム上に「Windows Media Player」を設置します。
以上で「Windows Media Player」の設置が完了しました。
②Listboxの設置及びデータの取り込み(一例)
Listboxの設置及びデータの取り込み(一例)は次の通りに行います。
①ツールボックスの中からリストボックスのアイコンをクリックする
ツールボックスの中からリストボックスのアイコンをクリックします。
②フォーム上に「リストボックス」を設置する
フォーム上に「リストボックス」を設置します。
下の通りにListboxが設置されました。
④Listboxにデータ(動画ファイルのフルパス)を取り込む
Listboxにデータ(動画ファイルのフルパス)を取り込みます。
今回のサンプルデータは、シート「top」のB2からB16のセルにあるデータです。このデータを取り込みます。1行目は(「一覧」の文字列が入っている行)はListboxのヘッダ用です。
Listboxにデータ(動画ファイルのフルパス)を取り込むには、今回はListboxのプロパティのRowSourceプロパティにデータが存在するセルを参照させます。
おまけで、ヘッダも表示するようColumnHeadsプロパティにTrueを設定しています。
以上の設定でListboxにデータ(動画ファイルのフルパス)が表示されるようになりました。
以上で、Listboxの設置及びデータの取り込み(一例)は完了です。
コードの例
【自動再生】Listboxの動画ファイルをクリックすると動画が自動再生
Option Explicit Private Sub ListBox1_Click() '動画のフルパスを取得する WindowsMediaPlayer1.Url = ListBox1.List(ListBox1.ListIndex, 0) End Sub Private Sub UserForm_Initialize() With WindowsMediaPlayer1 'WindowsMediaPlayerのサイズ(縦横)を再設定する※お好みのサイズで .Height = 312 .Width = 486 End With End Sub Private Sub WindowsMediaPlayer1_StatusChange() With WindowsMediaPlayer1 'WindowsMediaPlayerのサイズ(縦横)を再設定する※お好みのサイズで .Height = 312 .Width = 486 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のサイズが変わってしまうことがあります。
ではどのように変わってしまうのかご説明します。
フォーム起動時
フォーム起動時に以下の画像のようにサイズが変わってしまうことがあります。
フォームのサイズが自動で変わってしまっても再度サイズを調整するよう、10行目のInitializeイベント実行時に15行目と16行目のHeightプロパティとWidthプロパティに値を設定しています。
HeightプロパティとWidthプロパティの設定値はお使いの環境に適した値を設定してください。(ソースコードで使っている値はあくまでサンプル値)
ちなみにStatusChangeメソッドが呼び出されるのは、Urlプロパティに動画のフルパスが設定されたタイミングです。
動画のフルパスがUrlプロパティに設定されるタイミング
動画のフルパスがUrlプロパティに設定されるタイミングでサイズが変わってしまうことがあります。
動画のフルパスがUrlプロパティに設定されるタイミングでサイズが自動で変わってしまっても再度サイズを調整するよう、22行目のStatusChangeイベント実行時に27行目と28行目のHeightプロパティとWidthプロパティに値を設定しています。
HeightプロパティとWidthプロパティの設定値はお使いの環境に適した値を設定してください。(ソースコードで使っている値はあくまでサンプル値)
ちなみにStatusChangeメソッドが呼び出されるのは、Urlプロパティに動画のフルパスが設定されたタイミングです。
【動画停止状態】Listboxの動画ファイルをクリックすると動画が停止状態
Option Explicit Private Sub ListBox1_Click() With WindowsMediaPlayer1 '動画のフルパスを取得する .Url = ListBox1.List(ListBox1.ListIndex, 0) '動画の再生を停止する .Controls.stop End With End Sub Private Sub UserForm_Initialize() With WindowsMediaPlayer1 'WindowsMediaPlayerのサイズ(縦横)を再設定する※お好みのサイズで .Height = 312 .Width = 486 End With End Sub Private Sub WindowsMediaPlayer1_StatusChange() With WindowsMediaPlayer1 'WindowsMediaPlayerのサイズ(縦横)を再設定する※お好みのサイズで .Height = 312 .Width = 486 End With End Sub
コードの説明
以上のコードは、Listboxの動画ファイルをクリックすると動画が読み込まれ、自動再生されずに止めておく処理のコードです。
コードの詳細
Listboxの行をクリックすると3行目のListBox1_Clickイベントが呼び出されます。
8行目では、Listプロパティに、現在指定している(クリックした)行位置と、取得したい列の位置を指定しています。
ListIndexは現在指定した(クリックした)行の位置を返すので、Listプロパティの引数にListIndexを指定しています。
また、1列目の位置である0の値を指定することで、選択した1列目の値を取得することができます。
以上でListboxから、クリックしたファイルのフルパスを取得することができたので、そのフルパスをWindows Media PlayerのUrlプロパティに設定します。
Urlプロパティに動画ファイルのフルパスが設定されると、自動で動画が再生されるので、11行目のStopメソッドで動画の再生を停止状態にします。
Windows Media Playerの再生ボタンをクリックすると動画を再生することができます。
ただし、読み込んだ動画は自動再生したい場合は、「【自動再生】Listboxの動画ファイルをクリックすると動画が自動再生」の内容をご覧ください。
また、Windows Media Playerに動画のフルパスがUrlプロパティに設定されるタイミングで、以下のようにWindows Media Playerのサイズが変わってしまうことがあります。
また、フォーム起動時とWindows Media Playerに動画のフルパスがUrlプロパティに設定されるタイミングで、Windows Media Playerのサイズが変わってしまうことがあります。
ではどのように変わってしまうのかご説明します。
フォーム起動時
フォーム起動時に以下の画像のようにサイズが変わってしまうことがあります。
フォームのサイズが自動で変わってしまっても再度サイズを調整するよう、17行目のInitializeイベント実行時に22行目と23行目のHeightプロパティとWidthプロパティに値を設定しています。
HeightプロパティとWidthプロパティの設定値はお使いの環境に適した値を設定してください。(ソースコードで使っている値はあくまでサンプル値)
ちなみにStatusChangeメソッドが呼び出されるのは、Urlプロパティに動画のフルパスが設定されたタイミングです。
動画のフルパスがUrlプロパティに設定されるタイミング
動画のフルパスがUrlプロパティに設定されるタイミングでサイズが変わってしまうことがあります。
動画のフルパスがUrlプロパティに設定されるタイミングでサイズが自動で変わってしまっても再度サイズを調整するよう、29行目のStatusChangeイベント実行時に34行目と35行目のHeightプロパティとWidthプロパティに値を設定しています。
HeightプロパティとWidthプロパティの設定値はお使いの環境に適した値を設定してください。(ソースコードで使っている値はあくまでサンプル値)
ちなみにStatusChangeメソッドが呼び出されるのは、Urlプロパティに動画のフルパスが設定されたタイミングです。
動作確認
【自動再生】Listboxの動画ファイルをクリックすると動画が自動再生
マクロ実行前
下の画面はListboxの動画ファイルの行をクリックする前の状態です。
マクロ実行後
クリックされた動画が自動で再生されました。
【動画停止状態】Listboxの動画ファイルをクリックすると動画が停止状態
マクロ実行前
下の画面はListboxの動画ファイルの行をクリックする前の状態です。
マクロ実行後
動画が読み込まれて、停止状態になっています。
再生ボタンをクリックすれば動画を再生することができます。
最後に
本記事では、フォームのシート上に設置されたWindows Media PlayerとListboxを連携させる方法についてご説明しました。
Listboxに動画の置き場を読み込ませておいてその行をクリックすることで動画が再生できるのでちょっとした動画管理ツールとして使うことができます。
動画の管理をしたいという時にExcelのListboxと連携させる使い方は便利だと思うので参考にしてみてくださいね。
プログラミングのスキルを習得するなら
プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。
プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。