[[20080130003819]] 『シートに埋め込んだWavファイルを鳴らすには』(Dr.Uroko) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『シートに埋め込んだWavファイルを鳴らすには』(Dr.Uroko)

外部アプリ(メディアプレイヤ)などを使用しないで「チロリ〜ン」などの音を出したいので「検索」で調べ、
[[20050630005719]]に対する(kazu)さんのご回答でひとまず実現しましたが、ある参考書に「シートに埋め込んだWavファイルを鳴らす」ためのVBAの記述が次のように記載されていました。この方法が簡単なようですれけど、Wavファイルをシートに埋め込む方法が分かりません。どなたか教えて下さい。

ActiveSheet.OLEObjects("ok").Verb
( "ok" : 埋め込んだWavファイル名と思いますが。)

Excel2000, WindowsXP(SP2)


まず、

**外部アプリ(メディアプレイヤ)などを使用しないで「チロリ〜ン」などの音を出したいので

ですが、

ActiveSheet.OLEObjects("ok").Verb ( "ok" : 埋め込んだWavファイル名と思いますが。)

この方式でも外部アプリは使われていますよ!!(sndrec32.exe というプログラムです)
このサウンドレコーダーで「編集」---「ファイルの挿入」とクリックして、
Wavファイルを指定すると、上記のコードで演奏してくれそうですよ!!
VBAでやるなら Sendkeysを使う方法しか思いつきませんでしたが・・・。

メディアプレーヤーコントロールを使うことを検討してみてください!!
扱いが簡単ですから・・・。

それでもこだわるなら、APIですが・・・、

標準モジュールに

'===========================================================

Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

Sub main()

   Dim wavfile As String
   wavfile = "D:\My Documents\My Music\aaa.WAV"
   sndPlaySound wavfile, 1
'             ↑ここの数字の意味は検索すればわかると思います
End Sub

試してみてください。

ichinose


ichinoseさんありがとうございました。前記の(kazu)さんの回答がichinoseさんのものと同じで、現在はこの方法を使用しています。ただ、この方法だとWavファイルをフルパスで指定する必要があり、ExcelVBAで作ったプログラムを別のPCにて使用する際、Wavファイルも一定のディレクトリにコピーする必要があると思います。シートにWavファイルを埋め込んでおけば、このような処置は不要ではないかと考えたのでした。
参考書の付録CDに納められていた「シートにWavファイルを埋め込んだ」サンプルプログラムを実行してみた感じでは、外部アプリ(例えばメディアプレイヤなど)は起動していないで音だけが出てきました。

リンク先を確認していませんでした。失礼しました。

*** 外部アプリ(例えばメディアプレイヤなど)は起動していないで音だけが出てきました。

いいえ、それは見えていないだけです。タスクマネージャーのプロセスを観察していれば、

sndrec32.exe が起動しています。でも、

**シートにWavファイルを埋め込んでおけば、このような処置は不要

が目的なら・・・。

Sub Macro1()

    ActiveSheet.OLEObjects.Add Filename:= _
        "D:\aaa\bbb.WAV", Link:=False, DisplayAsIcon:=False

End Sub

で可能でした。

手動操作でも

・ 「挿入」----「オブジェクト」とクリックし、オブジェクトの挿入 ダイアログを表示させます。

・ 「ファイルから」タブを選択し、参照ボタンをクリックして、ここで挿入したいWavファイルを
  選択します。

これで設定完了です。

ichinose@トイレに起きた


 やりたいことがはっきりわかりませんが
下記で,コード上にWAVファイルを記載しておいて,マクロを実行すれば音がでます。
 実際には,シート状に埋め込んで音を鳴らして,その後埋め込んだものを消しています。
  (夕焼)

 Sub 音だけ鳴らす()

    objcount = ActiveSheet.OLEObjects.Count

    ActiveSheet.OLEObjects.Add Filename:= _
   "D:\bbb.WAV", Link:=False, DisplayAsIcon:=False  ' <−−−−ここにファイルを記載指定する

   ActiveSheet.OLEObjects(objcount + 1).Select

    Selection.Verb Verb:=xlPrimary

    ActiveSheet.OLEObjects(objcount + 1).Delete   ’ 削除でシートに埋め込みされます。

 End Sub

   次は,シート上に予め沢山WAVファイルを埋め込んでおいてそのアイコン(図)を選んで,
選んだアイコンの音を鳴らします。

 Sub 選んで音を鳴らす()

 sname = Selection.Name

 ActiveSheet.OLEObjects(sname).Select
 Selection.Verb Verb:=xlPrimary

 End Sub


  >ExcelVBAで作ったプログラムを別のPCにて使用する際、Wavファイルも一定のディレクトリにコピ
    ーする必要があると思います。シートにWavファイルを埋め込んでおけば、このような処置は不要で 
    はないかと考えたのでした。

 このことは正しいようですね。 
上のマクロで,元のフォルダ内のファイルを消して,シート上のアイコン(図)の一つを選んで
 実行したら音がでました。
   シートの画像を貼り付けると,元データがなくても,EXCELデータだけで画像が表示されると
いうことと同じようですね。(夕焼)

皆さんありがとう。年賀葉書(250枚くらい)の当選番号確認のプログラムを作るに当たり、これまでAccessを使用していたのですが、Accessを持たない人へ渡すとき、スタンドアロンにするのが面倒で、大抵の人が有しているExcelを使ってみようと思ったのです。
当選したとき「チロリ〜ン」とか、外れたとき「カーン」と鳴るようにしたかったのです。いろんなアイディア大変参考になりました。 Dr.Uroko

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.