- ベストアンサー
Excelの効果音を消す方法
VBAでマクロを作って実行していますが、コピー命令などで ピポッ と音がします。 連続してコピーペーストする処理では結構うるさく感じます。 Excelのオプション > 詳細設定 > 操作の結果を音で知らせる はチェックを外してありますが、音は消えません。 Windowsのサウンド設定の中にも同じ音はなさそうです。 消す方法はないでしょうか? マクロの実行中だけ命令でシステムの音量を下げる方法でも 構いません。 (ボリュームを下げる・・・というのはナシで) Windows7/Excel2007/VBA と言う前提です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
# VBAで書き直しました。 GetMuteメソッドでミュートされてるか判断出来ますが、SetMuteメソッドだけを呼び出して設定しても大丈夫です。
その他の回答 (2)
- kumatti1
- ベストアンサー率60% (73/121)
>SndVol.exe と言うexeファイル名は知りませんでした。こちらも勉強になりました。 ありがとうございました。 >詳細な仕組みは分かりませんが 先にご紹介致しましたCOMによって実現しています。 で、それをVBAに書き直そうとしたものの途中で面倒になって放置してたりします。
- kumatti1
- ベストアンサー率60% (73/121)
VBAだと大変そうなので他言語でDLLを作ってそれを呼び出すとかでしょうか。
お礼
kumatti1 さん ご回答ありがとうございました。 C++は大昔チョコっといじっただけで、もはやコンパイル環境もありません。 何とか VBA内(Win Script)で自己解決(Web検索)しました。 詳細な仕組みは分かりませんが、システムサウンドの音量が下記で 変更できるようになりました。 参考までに記しておきます。 標準モジュールに ----------------------- Private Declare Sub Sleep Lib "KERNEL32.dll" _ (ByVal dwMilliseconds As Long) Sub volchange(vol As Long) Dim oShell As Object Set oShell = CreateObject("WScript.Shell") oShell.Run "%SystemRoot%\System32\SndVol.exe" Sleep 500 If vol < 0 Then For i = vol To 0 oShell.SendKeys "{PGDN}" ' Vol down -20% Next i Else For i = 0 To vol oShell.SendKeys "{PGUP}" ' Vol up +20% Next i End If oShell.SendKeys "%{F4}" ' ALT F4 to exit the app. End Sub ----------------------- ターゲットのサブルーチンに ----------------------- call volchange(-4) ' コピペ処理 call volchange(4) ----------------------- で一応 コピペ処理中は音量最低にセット出来ています。 (サウンドコントロールの画面が一時表示されます) 音量を元の状態に戻したかったんですが、残念ながら 元のボリューム位置を取得する方法が分かりませんでした。 レジストリのどこかにあるらしいんですが・・・ {TAB}+space でミュートする方法も見つかったんですが ミュート状態なのかどうか検出する方法がわからず、 トグルしてしまうので使えませんでした。 Sleep 500 はサウンドコントロールの表示ディレイか何からしく 削除すると機能しません。 100なら私の環境ではOKでした。 元の情報では 1500でした。 どれくらいが適切か分かりません。 間抜けなピポッピポッ音の連続がなくなりました。
お礼
いろいろ試していただいたようでありがとうございます。 すでに別件に入ってしまい、当面 ご教授の方法を試す時間が 取れなくなってしまいましたが、サンプルコードとして記録しました。 時間が取れ次第試そうと思います。 (その後、効果音が消えないのは Excelの方ではなくて 別途入れていたクリップボードユーティリティの方で設定していたことを 見つけましたが、このようにシステムボリュームの操作ができれば 環境に関係ないので便利だと思います)