Excel VBA質問箱 IV

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

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


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

【24219】音声ファイル きゅうさん 05/4/15(金) 21:06 質問[未読]
【24220】Re:音声ファイル ウッシ 05/4/15(金) 21:29 回答[未読]
【24222】Re:音声ファイル Kein 05/4/15(金) 23:01 回答[未読]
【24239】Re:音声ファイル きゅうさん 05/4/16(土) 18:28 お礼[未読]
【24242】Re:音声ファイル Kein 05/4/16(土) 20:02 回答[未読]
【24244】Re:音声ファイル ウッシ 05/4/16(土) 21:51 回答[未読]
【24259】Re:音声ファイル きゅうさん 05/4/17(日) 23:20 お礼[未読]

【24219】音声ファイル
質問  きゅうさん  - 05/4/15(金) 21:06 -

引用なし
パスワード
   VBAのマクロを使ってwaveファイルや、mp3などの音声ファイルを警告音として
鳴らしたいのですが、どのようにすれば良いのか解りません。
よろしくお願いします。

【24220】Re:音声ファイル
回答  ウッシ  - 05/4/15(金) 21:29 -

引用なし
パスワード
   ▼きゅうさん さん:
>VBAのマクロを使ってwaveファイルや、mp3などの音声ファイルを警告音として
>鳴らしたいのですが、どのようにすれば良いのか解りません。
>よろしくお願いします。

こんばんは

標準モジュールの先頭から貼り付けて下さい。

Declare Function mciSendString _
         Lib "winmm.dll" _
         Alias "mciSendStringA" _
        (ByVal lpstrCommand As String, _
         ByVal lpstrreturnString As String, _
         ByVal ureturnLength As Long, _
         ByVal hwndCallback As Long) As Long
                
Declare Function mciExecute _
         Lib "winmm.dll" _
        (ByVal lpstrCommand As String) As Long
        
Private flg As Boolean
Sub Music_On()
  Dim ret As Long
  Dim sndStr As String
  sndStr = "Open """ & ThisWorkbook.Path & "\I & I.mp3"" alias Misic"
  If Not flg Then
    If mciSendString _
      (sndStr, vbNullString, 0, 0) = 0 Then
      If (mciSendString("Play Misic Notify", _
        vbNullString, 0, 0)) = 0 Then
        flg = True
      Else
        ret = mciExecute("Close Misic")
      End If
    End If
  End If
End Sub
Sub Music_Off()
  Dim ret As Long
  If flg Then
    ret = mciExecute("Stop Misic")
    ret = mciExecute("Close Misic")
    flg = False
  End If
End Sub

【24222】Re:音声ファイル
回答  Kein  - 05/4/15(金) 23:01 -

引用なし
パスワード
   特にwavファイルを再生するなら、簡単に

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

Sub GO_WAV()
 Dim Ret As Long
  
 Ret = sndPlaySound("C:\Windows\Media\Chimes.wav", 0)
End Sub

などとすれば出来ます。

【24239】Re:音声ファイル
お礼  きゅうさん  - 05/4/16(土) 18:28 -

引用なし
パスワード
   ウッシさん、Keinさん回答有難うございます。

ウッシさんの回答の中に「標準モジュールの先頭から貼り付けて下さい。」
と有りましたが、どの様にすればよいのか、よく解りません。

質問の仕方のまずかったように思いますので補足させてください。

やりたい事として、ユーザーフォーム内のコマンドボタンを押した際に
警告画面(メッセージボックス)の表示と警告音を一緒に鳴らしたいの
ですが、こう言った事は可能なのでしょうか?

2度手間になってしまいますが、よろしくお願いします。

【24242】Re:音声ファイル
回答  Kein  - 05/4/16(土) 20:02 -

引用なし
パスワード
   Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" _
(ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

Private Sub CommandButton1_Click()
 Dim Ret As Long
 
 Ret = sndPlaySound("C:\Windows\Media\Chimes.wav", 0)
 MsgBox "警告します !", 48
End Sub

というようなマクロを、フォームモジュールに入れます。
Declare 〜 で始まるコードは、全てのプロシージャより上に書く(結果として
モジュールの一番上にくる)ことが必要なのです。
あと、Public, Private などで始まるグローバル変数の宣言は、プロシージャより
下に書いても問題ありませんが、普通はモジュールの先頭に書きます。
Declare 〜を入力している場合は、Declare 〜とプロシージャの間に書きます。
それが一般的な書き方のようです。

【24244】Re:音声ファイル
回答  ウッシ  - 05/4/16(土) 21:51 -

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

新規に標準モジュールを挿入して、【24220】のコードを全てコピーしてそこへ
貼り付ければいいです。

ユーザーフォームのコマンドボタンには、

Private Sub CommandButton1_Click()
  Music_On
End Sub

として試して下さい。

【24259】Re:音声ファイル
お礼  きゅうさん  - 05/4/17(日) 23:20 -

引用なし
パスワード
   ウッシさん、Keinさん返事が遅れてすみませんでした。

おかげさまで、うまく動作するようになりました。

ありがとうございました。

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