- ベストアンサー
ACCESSでカラオケ選曲、演奏方法を教えて
- カラオケの動画がHDDに保存されていて、ACCESS2000で題名検索し、メディアプレーヤーで演奏する方法を教えてください。
- Call Shell関数を使用してメディアプレーヤーを起動し、演奏を行うことはできますが、変数に代入して演奏を行う場合にうまくいかないようです。
- ACCESSに詳しくないため、他の方法があれば教えていただけると助かります。
- みんなの回答 (11)
- 専門家の回答
質問者が選んだベストアンサー
ということは、テキスト17には、D:\音楽\カラオケ動画\ああ上野駅.mpg ではなくて ああ上野駅.mpg だけしか入っていないのでしょうか? だとしたら、 これをフルパスに補う必要があります。 他の題名も同じなんでしょうかね? 以下、その仮定の下に Dim Daimei As String Dim shellStr As String If Me!テキスト17 = "" Then MsgBox "題名を入れてください" Exit Sub End If Daimei = "D:\音楽\カラオケ動画\" & Me!テキスト17 If Dir(Me!テキスト17) = "" Then MsgBox Me!テキスト17 & " が見つかりません" ' Debug.Print "見つからないのは " & Me!テキスト17 Exit Sub End If shellStr = "C:\Program Files\Windows Media Player\Wmplayer.exe /Play /Close" _ & Chr(32) & Chr(34) & Daimei & Chr(34) 'Debug.Print "shellStr= " & shellStr Call Shell(shellStr, windowStyle:=vbNormalFocus) これでも駄目ならテキスト17の詳しい説明と テーブルやフィールドの説明も欲しい処。
その他の回答 (10)
- nicotinism
- ベストアンサー率70% (1019/1452)
おや? ではコマンドボタンのクリック時に Dim Daimei As String Dim shellStr As String If Me!テキスト17 = "" Then MsgBox "題名を入れてください" Exit Sub End If If Dir(Me!テキスト17) = "" Then MsgBox Me!テキスト17 & " が見つかりません" Debug.Print "見つからないのは " & Me!テキスト17 Exit Sub End If Daimei = Me!テキスト17 shellStr = "C:\Program Files\Windows Media Player\Wmplayer.exe /Play /Close" _ & Chr(32) & Chr(34) & Daimei & Chr(34) Debug.Print "shellStr= " & shellStr Call Shell(shellStr, windowStyle:=vbNormalFocus) としたらイミディエイトウィンドウ(Ctrl + G で出ます)には どなっていますか?(メディアプレイヤーが出るまで進むかな?)
補足
>イミディエイトウィンドウ(Ctrl + G で出ます)には どなっていますか?(メディアプレイヤーが出るまで進むかな?) この事が良く分かりませんが、ご指導のように書込み実行しますとMedia Playerは起動せず、「ああ上野駅.mpgが見つかりません」と言うメッセージが表示されます。
- nicotinism
- ベストアンサー率70% (1019/1452)
脇から失礼します。 Call Shell("C:\Program Files\Windows Media Player\Wmplayer.exe /Play /Close D:\音楽\カラオケ動画\ああ上野駅.mpg", 1) とするとちゃんと演奏が始まるのですが、次の様に変数に代入するとメディアプレーヤーは起動するのですが曲が演奏しません Call~の部分を Call Shell("C:\Program Files\Windows Media Player\Wmplayer.exe /Play /Close daimei", 1) ↓ Call Shell("C:\Program Files\Windows Media Player\Wmplayer.exe /Play /Close" _ & Chr(32) & Chr(34) & daimei & Chr(34), windowStyle:=vbNormalFocus) とすれば、別のウィンドウが現れて再生が始まるはずです。 が、 /Close で閉じてくれません。 調べたら /Close で閉じられるのは、昔のバージョンまでの様です。 当方、Media Player のバージョンは 10。 バージョンは Media Player のヘルプから分かりますよ。 再生終了したら自動的に閉じてくれないかな・・と、思いついたことを試したり Google で検索したりしたのですが、Shell で起動した場合は どうにも分からず・・・。 どうしてこんな単純なことがと思いつつ、これにて失礼。 くじけてしまった 人生が 今日もひとつ 増えてゆく ♪
お礼
ご協力ありがとうございます。 おっしゃるように書込み実行しましたが、やはりMedia Playerが起動した所でストップです、演奏開始されません。 因みにMedia PlayerはVER11となっていました。(OSは、WindowsXP) 知識が無くて良く分かりませんが、私なりに考えますに変数のやり方がまずいんじゃないでしょうか?
- piroin654
- ベストアンサー率75% (692/917)
どうもWindows Media Playerに問題が あるような感じですね。 リンク先のファイルは使用できましたか。 一応、ZIPファイルになっているので 解凍(展開)しなければいけませんが。 展開すればフォルダの中にAccess2000形式の mdbファイルが入っています。 使い方はNo6で述べましたが、テキストボックスの 文字フォントがすべてTahomaになっているので、 テキストボックスのフォント名を各テキストボックスの プロパティからMSゴシックなどにすれば日本語表記になります。 ファイルのテーブルのMediaPthとMediaNameに フォルダへのパスとファイルの名前を入れておけば そのまま使用できます。フォームやWindows Media Player の大きさはデザインビューにして広げれば快適に 使用できます。なお、OSによってはファイルを 起動するときにセキュリティの警告メッセージが出ますが、 新しいAccessのファイルにすべてインポートすれば 警告は出なくなると思います。 このファイルの主要な部分はNo4で示したコード だけです。その他は使用上の便宜を図るための ものに過ぎません。 また、一度Windows Media Playerのバージョンアップを してみてはどうでしょう。
お礼
>解凍(展開)しなければいけませんが。 展開すればフォルダの中にAccess2000形式の mdbファイルが入っています。 展開して、Access2000形式のmdbファイルは立ち上がったのですが、その後砂時計が出て何ともなりません。 Media Playerは、通常に使用する場合は正常に動作します。 誠にご迷惑をおかけしております。
- piroin654
- ベストアンサー率75% (692/917)
海外のサンプルですが、 http://www.access-programmers.co.uk/forums/showthread.php?t=144243 この下のほうに AccessMediaPlay3.zip というサンプルファイルがあります。このファイルは Access2000形式です。かなり作りこんであるファイルなので プログラムの内容はわかりにくいかもしれません。 このファイルを開いて、フォームが表示されるようであれば Windows Media Playerは設定できるはずですが。もし フォームを開いてもエラーが生じるようであれば Windows Media Playerがインストールされていないか、 あるいはWindows Media Playerに何らかの問題が ある可能性があります。 一応、使い方をいいますと、Media Pathというボタンを クリックします。するとダイアログが表示されるので、 ファイルがあるフォルダに移動し、ファイルを選択します。 MediaPathとMediaNameの二つのテキストボックス部分に それぞれ表示が終わったらメディアプレイヤの再生ボタン をクリックします。 なお、このファイルのテーブルのMediaPthにはファイルが 収められているフォルダのパス、MediaNameはファイルの 名前を入れています。 フォームでファイルを選択すれば自動的にテーブルにファイルが 格納されているフォルダへのパスとファイル名が保存されます。 Nextのボタンを押して新しいレコードのフィールドに移動して 次のファイルを選択すれば次のファイルのデータが保存されます。
お礼
御親切に何度もありがとうございます。 >このファイルを開いて、フォームが表示されるようであれば Windows Media Playerは設定できるはずですが。 やはり同じように砂時計が出ていつまで待っても表示されません(応答なしと表示されています) ほんとにどうもすみません。
- piroin654
- ベストアンサー率75% (692/917)
>そのようにやりましたが、なぜか砂時計が >出たままMedia Playerが張り付きません 初めてメディアプレイヤを設定するときは しばらく砂時計のままになります。 たいていの場合はそのうちにメディアプレイヤ が張り付くはずなのですが。 保存ボタンを押したらどうなりますか?
補足
砂時計が出ると、クリックボタンもフォ-ムの閉じるボタンも反応しなくなります。(上のブルーの帯にACCESS(応答なし)と出ます)
- piroin654
- ベストアンサー率75% (692/917)
追加です。Windows Media Playerの設定は、 フォームをデザインビューで開き、ツールボックスを 表示させ、ツールボックスの工事マーク(コントロールの選択) をクリックし、表示された表をずーっと下に移動させ、 表の一番下あたりにあるWindows Media Playerをクリックし、 フォームの適当な場所に四角を書くように設定します。
補足
ありがとうございます そのようにやりましたが、なぜか砂時計が出たままMedia Playerが張り付きません
- piroin654
- ベストアンサー率75% (692/917)
No2です。少し説明を加えておきます。 (1) テーブルを新規に作成し、たとえばデータという 名前でフィールドを作成し、フィールドの型を テキスト型にします。テーブル名をたとえば Tファイルとします。 テーブル名 フィールド名 型 Tファイル データ テキスト型 「データ」にはファイルまでのパス、たとえば質問にあるような D:\音楽\カラオケ動画\ああ上野駅.mpg などを入れておきます。 (2) フォームをデザインビューで開き、フォームの レコードソースにTファイルを指定します。 テキストボックスを一つ設定し、その名前を txPathとします。そのコントロールソースを データとします。 (3) 次に、フォームにWindows Media Playerを 設定し、その名前をmyWindowsMediaPlayer とします。 (4) フォームのコード表を表示し、以下を貼り付け 保存します。 Private Sub Form_Current() Dim strPath As String If IsNull(Me!txPath) = False Then strPath = Me!txPath Me!myWindowsMediaPlayer.URL = strPath End If 'レコードを移動させてテキストボックスが '空のデータを示したとき稼動を中断 If Me.NewRecord = True Then Me.WindowsMediaPlayer1.URL = "" End Aub 以上で、設定が終わります。 表示したいファイルはフォームの下にある レコードの移動で選択できます。 もっと気のきいた選択方法もありますが、 まずはこれで確認してみてください。 一部、紹介した回答と重なりますが、作り方は このようにします。あとは、回答の中身も 読んでみてください。
お礼
再度のご回答を頂きありがとうございます。 ご丁寧に説明していただいたのに、どうしても私には難しくて理解できません ほんとうにすみません。
- imogasi
- ベストアンサー率27% (4737/17069)
>・・・・Close daimei", 1)と””の中にdaimei(daimeiという変数(名)なのだから)を入れのは、初歩的な誤り。 >ACCESSはあまりよく知りませんのでよろしくお アクセスの問題とはいえませんでしょう。 ーー Sub test01() daimei = "http://www.aoitorinouta.com/asobi/kimigayo.mp3" Call Shell("C:\Program Files\Windows Media Player\Wmplayer.exe /Play /Close " & daimei, 1) End Sub でテストすると演奏しました。
補足
ありがとうございます 私の説明不足ですが、カラオケファイルは100以上あって、ACCESSではファイル名と同じ題名をデータとして登録したテーブルが作成してあります、この中からフォームを使って題名を検索します、検索によって表示された曲をアクションボタンを使って演奏開始したいので、テキストボックスに表示された題名を変数に代入したいと言う考えなのですが....だめでしょうか ご迷惑をお掛けし、どうもすみません
- piroin654
- ベストアンサー率75% (692/917)
以前、同様の質問に回答しています。 http://oshiete1.watch.impress.co.jp/qa6341088.html 上記の方法はAccess2000でも動作します。 確認してみてください。 わからないことがあれば補足してください。
お礼
早速のご回答ありがとうございました。 この方法は見ましたが、私にはどうも理解でき無かったので研究してみます。
- shut0325
- ベストアンサー率40% (490/1207)
Call Shell("C:\Program Files\Windows Media Player\Wmplayer.exe /Play /Close " & daimei & """", 1) はどうでしょう? 判りにくいときは、Debug.Print か MsgBox でテスト表示するといいと思います。
補足
ありがとうございました。 やはりメディアプレーヤーは起動しますが、曲が演奏されません。 >判りにくいときは、Debug.Print か MsgBox でテスト表示するといいと思います。 やり方が良くわかりませんが、具体的にどうしたら良いでしょうか?
お礼
長い間すみませんでした、この回答を貰ってからなぜか「ベストアンサー」も「お礼」もボタン(バナー?)が出無くなってしまい、OKWAVに質問しても回答が無く、何ともしようがありませんでした、今日見た所、「ベストアンサー」、「お礼」ボタンが出ましたので遅くなりましたが、「ベストアンサー」に選ばせて頂きました。 結果は、この方法でちゃんと演奏開始し、念願であった「カラオケマシーン」が出来ました。 本当にありがとうございました。