Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6285 / 13646 ツリー ←次へ | 前へ→

【46152】起動時音を鳴らしたい。 ユニフ 07/1/24(水) 16:55 質問[未読]
【46153】Re:起動時音を鳴らしたい。 Blue 07/1/24(水) 17:00 発言[未読]
【46156】Re:起動時音を鳴らしたい。 ichinose 07/1/24(水) 20:26 発言[未読]
【46176】Re:起動時音を鳴らしたい。 ユニフ 07/1/25(木) 15:35 発言[未読]
【46177】Re:起動時音を鳴らしたい。 Blue 07/1/25(木) 15:41 発言[未読]
【46178】Re:起動時音を鳴らしたい。 ユニフ 07/1/25(木) 16:44 お礼[未読]
【46179】Re:起動時音を鳴らしたい。 Blue 07/1/25(木) 16:56 回答[未読]
【46183】Re:起動時音を鳴らしたい。 ichinose 07/1/25(木) 21:24 発言[未読]
【46188】Re:起動時音を鳴らしたい。 ユニフ 07/1/25(木) 22:05 お礼[未読]

【46152】起動時音を鳴らしたい。
質問  ユニフ  - 07/1/24(水) 16:55 -

引用なし
パスワード
   ファイルを開けたときに「こんにちは」と話す(wavファイルを使う)
ようにしたいと思います。

私が考えた方法はセルJ3に挿入で.wavを貼り付けておき
イベントプロシージャに
Private Sub Workbook_Open()

  Range("J3").Select
  Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
  Range("A1").Select
End Sub
とマクロ記録で作ったコードを書きうまくいきました。

できればこういう小細工なしにやりたいと思うのですが
いいコードがあれば教えてください。

【46153】Re:起動時音を鳴らしたい。
発言  Blue  - 07/1/24(水) 17:00 -

引用なし
パスワード
   PlaySondまたはmciSendStringといったAPIを使うとか。

://homepage1.nifty.com/rucio/main/Samples/s_mm1.htm

※あたまに h t t p を付けてください。

【46156】Re:起動時音を鳴らしたい。
発言  ichinose  - 07/1/24(水) 20:26 -

引用なし
パスワード
   こんばんは。

>ファイルを開けたときに「こんにちは」と話す(wavファイルを使う)
>ようにしたいと思います。
「こんにちは」だけなら、

Sub test()
  With Worksheets("sheet1").OLEObjects.Add( _
       Filename:="d:\xxx\xxx\こんにちは.WAV" _
       , Link:=True, DisplayAsIcon:=True)
    .Verb
    .Delete
    End With
End Sub

こんな方法も検討してみてください。

【46176】Re:起動時音を鳴らしたい。
発言  ユニフ  - 07/1/25(木) 15:35 -

引用なし
パスワード
   blueさん、ichinose さん レスありがとうございます。

PlaySondまたはmciSendStringは調べていましたが
変数やら何やら私のレベルでは理解困難であきらめていました。
ichinoseさんのコードにトライしてみたいので
アドバイスいただけますでしょうか。

> Filename:="d:\xxx\xxx\こんにちは.WAV" _
これは鳴らす音のディレクトリを書けばよいのでしょうか。
例えばディスクトップにabc.wavが置いてあるとすると
filename:="c:\document and setting\user\デスクトップ\abc.wav"
で良いですか?
>       , Link:=True, DisplayAsIcon:=True)
>    .Verb
>    .Delete
これらはいじらないでもいいでしょうか?

よろしくお願いします。

【46177】Re:起動時音を鳴らしたい。
発言  Blue  - 07/1/25(木) 15:41 -

引用なし
パスワード
   >PlaySondまたはmciSendStringは調べていましたが
>変数やら何やら私のレベルでは理解困難であきらめていました。
そんなに難しいくはないはずなんだけど。

Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long
Private Const SND_ASYNC = &H1

Private Sub Workbook_Open()
  Call PlaySound("c:\document and setting\user\デスクトップ\abc.wav", 0, SND_ASYNC)
End Sub

【46178】Re:起動時音を鳴らしたい。
お礼  ユニフ  - 07/1/25(木) 16:44 -

引用なし
パスワード
   ▼Blue さん:レスどうもです。

うまくいきました。今後の応用のためにちょっとアドバイスいただけますでしょうか。
Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long
Private Const SND_ASYNC = &H1

の部分ですが、これはAPIという機能を有効にするための呪文のようなものと
思っててもいいでしょうか。
つまりPlaySoundを使いたいときには開けゴマのような呪文が必要で
その呪文が上記のコードなんですよという解釈でいいでしょうか?

【46179】Re:起動時音を鳴らしたい。
回答  Blue  - 07/1/25(木) 16:56 -

引用なし
パスワード
   ▼ユニフ さん:
>の部分ですが、これはAPIという機能を有効にするための呪文のようなものと
>思っててもいいでしょうか。
>つまりPlaySoundを使いたいときには開けゴマのような呪文が必要で
>その呪文が上記のコードなんですよという解釈でいいでしょうか?
そうですね。

Declare宣言文は、"XXXX.DLL" にある、引数が○○で戻り値が△△の□□という関数を
つかいます

とVBA側に教えてあげる記述です。

今回の場合

winmm.dll にある、
第一引数がByValのString型、第二引数がByValのLong型、第三引数がByValのLong型
戻り値がLong型の
"PlaySoundA"という関数を"PlaySound"関数として使います。

という宣言になります。

また、
>Private Const SND_ASYNC = &H1
ですが、別になくても、

Call PlaySound("c:\document and setting\user\デスクトップ\abc.wav", 0, &H1)

と直接指定してもつかますが、後から見たときに &H1 ってなんだっけと思わないように
SND_ASYNCという変数名にして使っています。
(SND_ASYNCという変数名はC言語で使うときの定数に合わせてある)

【46183】Re:起動時音を鳴らしたい。
発言  ichinose  - 07/1/25(木) 21:24 -

引用なし
パスワード
   こんばんは。
>> Filename:="d:\xxx\xxx\こんにちは.WAV" _
>これは鳴らす音のディレクトリを書けばよいのでしょうか。
>例えばディスクトップにabc.wavが置いてあるとすると
>filename:="c:\document and setting\user\デスクトップ\abc.wav"
>で良いですか?
>>       , Link:=True, DisplayAsIcon:=True)
>>    .Verb
>>    .Delete

ファイルパスの変更のみで大丈夫ですよ!!
上手く行きませんでしたか?
Excel2000 2002で確認しましたが、正常に音が出ましたが・・・。

Blueさんのほうで解決されたなら、そちらで進めてください

【46188】Re:起動時音を鳴らしたい。
お礼  ユニフ  - 07/1/25(木) 22:05 -

引用なし
パスワード
   ichinose さんレスありがとうございました。

こちらの方法でもうまくいきました。
開いたときにちょっと小窓のようなものが
開くのが気になりますが、方法は複数
知っておいたほうが応用がしやすいので
勉強になります。
ありがとうございました。

6285 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free