質問: パソコン音声のミュートをvbaから制御するマクロ パソコンの音声のミュートをエクセルvbaで制御する方法を教えてください。 設定した条件になるまでミュートし、条件に適ったらオンにしたいと思いますが、vbaの知識だけではどうしようも無いようです。 waveファイルを鳴らすことは出来ましたが種類が多くまとめて制御したいと思います。 宜しくお願いします。
回答: ざっと調べてみましたが、どうも一筋縄ではいかないようですね。 私なら、いっそのこと音量を制御するソフトをshell関数で呼びます。 例えば、 ■windows volume controller (wvc) http://www.vector.co.jp/soft/win95/art/se380707.html なんてソフトがありますが、 wvc.exe が c:\program files\tools にあるとして、 '-----------------↓ ココカラ ↓--------------------- sub sample1() 'マスタ音量を0に shell "c:\program files\tools\wvc.exe a0", vbhide end sub sub sample2() 'マスタ音量を50に shell "c:\program files\tools\wvc.exe a50", vbhide end sub '-----------------↑ ココマデ ↑--------------------- (winxp-excel2003環境で動作確認済) もっとも、上記ソフトに関しては、 ミュートのon/off自体を切り替えるオプションがありませんし、 現在の音量を取得することもできないので、 「元の状態に戻す」ことはできません。 ■ボリュームリセット http://www.vector.co.jp/soft/winnt/art/se312770.html の方は、デバイス単位の制御はできませんが、 あらかじめミュート状態のデータファイルを用意しておけば、 現在の状態を記録⇒ミュート状態に移行⇒記録した状態に復帰 といった制御も可能だと思われます。 その他、より明示的にミュートのon/offを直接切り替えるソフトも 探せばあるのではないかと思います。 別のアプローチとしては、 sndvol32を開いてsendkeysで制御というのも考えましたが '-----------------↓ ココカラ ↓--------------------- sub sample3() shell "sndvol32", vbhide sendkeys "%(m)", true sendkeys " ", true sendkeys "%{f4}", true end sub '-----------------↑ ココマデ ↑--------------------- ウェイトをかけるなどしてうまく同期させないと、 きちんと動作しない場合がありますし、遅い印象です。 以上、ご参考まで。