
よろしくお願いします
いつもgooの皆さんには大変お世話になっております
お陰様でどんな難問も解決できて大変助かっております
質問内容
セルの値が条件を満たしたらWAVEファイルを指定回数鳴らすマクロができたのですが
喜んだのもつかの間で、for nextで何回回しても1回しか演奏しないことがわかりました
ここまで苦労したのでがっかりです
そこでネットで見つけた Application.Wait (Now() + TimeValue("00:00:07"))
の1行を加えましたが、当然ながら、その間他の処理が進みません
そこで質問なのですが
処理を中断しないでwaveファイルの演奏を指定回数続けるのは不可能でしょうか?
以下はマクロです
V39のファイル名を渡してplay_wavマクロを繰り返す
For i = 1 To 5
Call play_wav(Range("V39"))
Application.Wait (Now() + TimeValue("00:00:07"))
Next i
どなたか解決策を教えていただけますか?
無理ならば残念ですがあきらめます
以上です。よろしくお願いします。
No.2ベストアンサー
- 回答日時:
すいません。
mciSendStringでの同期再生方法は分かりませんでした。mciSendStringではないのですが、PlaySoundであれば、次のようにすればできます。
Public Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" ( _
ByVal pszSound As String, _
ByVal hmod As Long, _
ByVal fdwSound As Long _
) As Long
Public Const SND_ASYNC = &H1 '非同期再生
Public Const SND_SYNC = &H0 '同期再生
Sub sample()
Dim WrkSndFile As String
WrkSndFile = ThisWorkbook.Path & "\test.wav"
PlaySound WrkSndFile, 0, SND_SYNC
PlaySound WrkSndFile, 0, SND_SYNC
PlaySound WrkSndFile, 0, SND_SYNC
End Sub
ママチャリさんこんばんは
お礼が遅れました
二度も教えていただいて恐縮です
PlaySound WrkSndFile, 0, SND_ASYNC を使わせていただきます
これで1回音を出して、そのあとに
Application.Speech.Speakをすることにしました
WrkSndFile = ThisWorkbook.Path & "\Alarm01.wav" の
ThisWorkbook.Path が勉強になりました
ありがとうございました
No.3
- 回答日時:
通りがかりで失礼します。
お酒も飲んだので・・・私がよく使う手ですが
VBSで、WMPlayer.OCX を操作します。
メモ等を開いて
Dim wmp
Set wmp = CreateObject("WMPlayer.OCX")
wmp.settings.volume = 100 '音量設定
wmp.URL = "C:\Windows\Media\Alarm06.wav" '再生するwavファイルパス
For i=1 To 5
wmp.Controls.play()'再生
Do
WScript.sleep 5
Loop Until wmp.playState = 1 '停止迄待つ
wmp.Controls.currentPosition = 0 '冒頭に巻き戻す
Next
を張り付けて、拡張子を .vbs として保存
上記の例では、5回再生、ボリュームの設定も可能
こんなファイルを幾つか準備
エクセルからは
Sub ボタン1_Click()
Dim strPath As String
Dim RetVal As Variant
strPath = "パス\test.vbs"
RetVal = Shell("WScript.exe """ & strPath & """")
End Sub
で希望のvbsファイルを実行させます。
他にも
IEのBGMで音楽と映像(メッセージ)を流すとか・・
メモ帳開いて
<html>
<head>
<title>アラーム</title>
<bgsound src="C:\Windows\Media\Alarm06.wav" loop="5">
</head>
<body>
<marquee height="100" scrollamount="3" direction="up">
<FONT size="7">
<FONT color="red">
<Center>
もう時間ですよ。
</body>
</html>
</marquee>
名前を付けて保存で
拡張子 .html
クリックすると IEが起動して、音楽が流れる。
繰り返し再生は loop="infinite"
お世話になっております
補足を使ってしまったのでお礼で質問させてください
strPath = "パス\test.vbs"
の部分ですが、VBSファイル名がHALLO.vbsなので
strPath = "C:\Users\maa\Downloads\HALLO.vbs"
でいいですか?
「スクリプトファイルが見つかりません」のエラーメッセが出ます
ファイルは確かに"C:\Users\maa\Downloads\HALLO.vbs"
にあるのですが・・・
また、
Dim wmp
Set wmp = CreateObject("WMPlayer.OCX")
wmp.settings.volume = 100 '音量設定
wmp.URL = "C:\Windows\Media\Alarm06.wav" '再生するwavファイルパス
For i=1 To 5
wmp.Controls.play()'再生
Do
WScript.sleep 5
Loop Until wmp.playState = 1 '停止迄待つ
wmp.Controls.currentPosition = 0 '冒頭に巻き戻す
Next
はNext iでいいですか?
No.1
- 回答日時:
1回しかならないのは、非同期再生になっているからだと思います。
これを同期再生にすれば、回数だけなるのですが、それではダメなのですよね。どうしても非同期で鳴らしたいのであれば、次のようにすれば可能ではありますが…。
maamaaさんが作ったplay_wavプロシジャをplay_wavs(s付)で包みました。
play_wavsは、PlayCount がゼロになるまで、7秒後に自分自身を呼びつつけます。
Option Explicit
Dim PlayCount As Long
Sub main()
PlayCount = 5
Call play_wavs
End Sub
Sub play_wavs()
If PlayCount = 0 Then Exit Sub
PlayCount = PlayCount - 1
Call play_wav(Range("V39"))
Application.OnTime (Now() + TimeValue("00:00:07")), "play_wavs"
End Sub
早朝からありがとうございます
教えていただいた方法でやってみます
ちなみに、以下はmciSendStringを使った現在のマクロですが、どこか直せば
同期再生になるでしょうか?
Sub play_wav(ByVal kyoku As String)
Dim wav_name As String
wav_name = "C:\Windows\Media\" & kyoku
If Dir(wav_name) = "" Then
MsgBox wav_name & "が見つかりません。"
Exit Sub
End If
mciSendString "Play " & wav_name, "", 0, 0
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/05/23 16:28
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Excel(エクセル) Excelのマクロについてご教授ください 2 2023/02/25 09:43
- Visual Basic(VBA) tatsumaru77様 昨日回答して頂いたものです。 すみませんが、昨日の質問で1つ補足があります 1 2022/05/15 15:06
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2023/03/12 12:16
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
YouTubeの再生中、勝手に巻き戻...
-
RealOnePlayerとWindowsMedi...
-
sony media library earth
-
AVIの音ずれ
-
AVIファイルを書き込んで、...
-
CDのビデオを再生させることが...
-
漸次書きって何ですか、
-
PremierePro2.0のオーディオピ...
-
動画をテレビで見る方法
-
ituneにおけるaac変換について
-
ニコニコムービーメーカーの動...
-
DVDの中の音楽のみをPCに保存し...
-
iMovieHDでFLVファイルを読み込...
-
TBSラジオのポッドキャストの聞...
-
movファイルの圧縮、変換
-
写真ファイルをCD, DVDに焼く方...
-
PSPの動画にチャプターをつけれ...
-
パソコン経由でAndroidにライブ...
-
VLCメディアプレーヤーで、動画...
-
おすすめ動画編集ソフト
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
YouTubeの再生中、勝手に巻き戻...
-
Windows Media Player、Real ...
-
TV録画をSWデコーダーで見ると...
-
mp4動画がスムーズに再生できま...
-
ASFファイルが再生できません
-
パソコンの動きがコマ送りのよ...
-
GOM playerでの再生速度の設定
-
ウインドウズメディアプレーヤ...
-
QuickTImeの表示
-
ビデオのファイルを再生すると...
-
難問 waveファイルを繰り返し...
-
CDの内容をブルーレイディスク...
-
英語学習のためのMP3プレイヤー
-
拡張子 ram について。
-
映像のコマ遅れ?を解消するには
-
メディアプレーヤーでなく、ペ...
-
QuickTime Player の使い方
-
mkvファイルが再生できないんで...
-
サウンドのプロパティで音がう...
-
Windows Media Playerの再生速...
おすすめ情報
なんどもお世話になっております
先ほどは、補足するつもりでお礼になってしまいました
早速やってみます
ThisWorkbook.Pathを初めて知りました
これは前から知りたかったことで、また一つ勉強になりました
ありがとうございます
午後から仕事でお礼が遅れます
hallo-2007さんこんばんは
仕事の都合でこの時間になりました
親切に教えていただきありがとうございます
今までにやったことがない方法なので、できるかどうかわかりませんが
トライしてみます
結果が楽しみです
ありがとうございました