- ベストアンサー
エクセルにmidファイルを張り付けて、起動と同時に音も鳴らす
普通に何かを作ったエクセルファイルに、MIDIファイルを張り付け (又は何らかの方法で埋め込み?)、そのエクセルファイルを起動させると 自動的にそのMIDIを再生したいのですが、以下の条件で可能でしょうか? 以前に同様の質問をしましたが、意図とは違った回答でしたので再度質問 致します。 条件 ・音をならすために、エクセルファイルからMIDIファイルにリンクを 貼るなどの、xls と mid が 2つ 存在させるやり方は しない。(xls中に挿入張り付け、または何らかの埋め込みをしたい) ・作成したエクセルファイルを開けると自動的に音が鳴るようにしたい。 (実際に挿入→オブジェクトから張り付けを行ったが、エクセルの表内 に張り付けたMIDIは当然だがそれをクリックしに行かないと実行 されなかった) ・MIDIが実行される際、メディアフプレーヤーなどの再生ソフトは 別ウインドウで開いたりして実行されないようにしたい。 (ウインドウが開くのはエクセルだけの状態にしたい) 以上のような事は、マクロやその他何らかの方法でで可能でしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
前回、回答した者です。 いろいろ考えている内に締め切られてしまいましたので、こちらで書かせて頂きます。 (1)オブジェクトの貼り付けは、Excel以外にExeが必要です。(リアルプレイヤーなど) 他のパソコン等に、リアルプレイヤーが存在しなければいけません。 (2)#1の方も書いていますが、ファイルに関連付けたアプリが起動しますので、 例えば、こちらのパソコンで、Midにリアルプレイヤーが関連付けられていて、 Midファイルを貼り付けても、 他のパソコンではメディアプレイヤーが関連付けられていると、 メディアプレイヤーでの演奏になります。 結構、ソフトのインストールをすると知らない間に、関連付けが変わっていたりしませんか? (3)VBで一応埋め込んで、非表示で演奏するプログラムを作成する事は出来ました。 (ブックが閉じたら、音を止めるなどの細かい所は処理していませんが) ので、(1)、(2)を踏まえた上で、フリーソフトで(フォームが表示されないで、Midiを演奏する)そういう物があるか探してみてください。 私も探してみましたが、見つかりませんでした。 前回の質問で、補足に対し、回答できなかった事をお詫びします。
その他の回答 (2)
- taisuke555
- ベストアンサー率55% (132/236)
書き忘れてしまいました。 もしVB(Visial Basic)が使えるようでしたら、参考ソースを載せますので補足で書いてください。 (といっても完璧に作れているわけではなく、上記条件を満たしている程度のものです) あと自分で作成したプログラムでしたら、他のプログラムが使っていない拡張子(ZZZとか) をMidiファイルと判断させて演奏させる事も可能だと思いますので、 (2)はクリアできると思います。(確証はありません) 余談ですが、貼り付けられたオブジェクトをブックが開いた時にクリックせず実行するには、 Private Sub Workbook_Open() Worksheets("Sheet1").OLEObjects(1).Verb Verb:=xlPrimary End Sub でできると思います。
お礼
ありがとうございます。 この記述を一度ためしてみます。
恐らく無理でしょうね。 好みのmidiファイルを埋め込んでなおかつmidiファイルを再生する機能を持つプログラム(*.exe)を開発するか、 好みのmidiファイルを埋め込んでなおかつメディアプレーヤーを非表示で呼び出して再生するプログラム(*.exe)を開発するぐらいでしょうか。 excelに貼り付けたオブジェクトを実行する場合、 excelは選択されたオブジェクトをwindowsに渡し、 windowsはそのPCで関連付けされているプログラムに渡し、 呼び出されたプログラムが実行する。 という動作ですので、midiを再生するプログラムが「非表示で再生」という機能を持っていないとダメなのです。 もし「絶対にどんなことをしてもExcelに埋め込んだmidiファイルを非表示のメディアプレーヤーで再生したい」 というのであれば、メディアプレーヤーのSDKを勉強してみてはどうでしょうか。 ただし、私がExcel上で試した限り、シートに貼り付けたオブジェクトのファイルタイプをVBAから取得することはできませんでした。 恐らくですが、「Excelはそのオブジェクトがどんなタイプなのかを知る必要がない。そのオブジェクトがどんなタイプであり、どのアプリケーションで実行されるかはWindowsが管理するべき情報である。」といったところじゃないでしょうか。
お礼
回答ありがとうございます。 やはり簡単には無理なようですね。 たとえばIEなら (私が条件としてあげた1つめは満たせませんが)HTMLを実行すると同時に(実際はJAVAスクリプトなどの記述もいるが)音を鳴らす事と メディアプレイヤーは起動はするが、隠れたところで起動し、ウィンドウは IEのブラウザしか開かないで音が鳴っているという状態が可能なので エクセルでも可能かと思ったのですが・・・。 ありがとうございました。
お礼
再度の回答ありがとうございます。 また、その後も考えてくださっていたということも含めて、お礼申し上げます。 NO.1のお礼投稿でも書かせていただいたように、IEでは(私の書いた 条件のうち1つ目以外は)簡単に出来てしまうので、エクセルでも何か 方法がきっとある、と思っていたのですが、かなり難しいようですね。 ちょっと残念ですが断念いたします。 お手数をとっていただきありがとうございました。