エクセル2007のVBAを使って、サウンドコントロールのフリーソフトを操作する方法

このQ&Aのポイント
  • エクセル2007のVBAを使って、サウンドコントロールのフリーソフトを操作する方法について調べています。
  • 具体的には、「3RVX]というフリーソフトを使用して、パソコンの音量をミュートすることができます。
  • エクセルのVBA(マクロ)でこの機能を実現しようとしていますが、上手くいかないため、解決策を探しています。
回答を見る
  • ベストアンサー

エクセル2007のVBAを使って、サウンドコントロールのフリーソフトを

エクセル2007のVBAを使って、サウンドコントロールのフリーソフトを操作しようとしています。 具体的には、「3RVX]というフリーソフトで、パソコンの音量をミュートしたいのです。 このソフトは起動させるとタスクトレーに常駐して、自分で割り当てたホットキーを押すとミュート、ミュート解除ができます。私は「End」キーを割り当てたので、「End」キーを押すとミュートされます。これは他のソフトで動画を見ている最中でも動作しますし、今ここに質問を入力している間でも動作します。 問題は、これをエクセルのVBA(マクロ)で動作させたいのですが、上手くいかないのです。 マクロの記述は次の通りです。 Sub タイマー開始() MsgBox "タイマーがセットされました" SendKeys "{END}" End Sub メッセージボックスは表示されます。「OK」を押すと、次の命令である「SendKeys」が作動するはずなのですが、音声はミュートされません。 「End」キーの代わりに、「Delete」キーを割り当てて、マクロもSendKeys "{DELETE}"にしてみたところ、エクセル上でセルにあった文字が消えたので、「Delete」機能は作動しているのだと思います。ただ、エクセル内で作動してしまっているようです。 エクセルがアクティブであっても、手動で「End」キーを押せばミュートされるので、マクロでこれと同じ動作ができないものでしょうか? ※そもそも目的は、DVD再生している状態で、ある時刻になったら音を消したり出したりするタイマー機能を作りたいというものです。それが実現できれば、他の方法でも構いません。

  • doopy
  • お礼率78% (15/19)

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

こちら http://www.vector.co.jp/soft/winnt/art/se355641.html でご提供されているMute.vbsというのをちょっと利用させていただいてみたら,なんか出来たっぽいです。 Sub Macro1() ’出典: ’http://www.vector.co.jp/soft/winnt/art/se355641.html Dim dx Set dx = CreateObject("MSWebDVD.MSWebDVD.1") If dx.Volume = -10000 Then  dx.Volume = -5000 Else  dx.Volume = -10000 End If Set dx = Nothing End Sub

doopy
質問者

お礼

原理はまだ完全には理解できていませんが、とりあえず上手くいきました! とても助かりました。ありがとうございました!

その他の回答 (1)

  • mimeu
  • ベストアンサー率49% (39/79)
回答No.1

SendKeys の情報は実行した時点でアクティブなウインドウに送られます。 たとえば直前に、「3RVX」をアクティブにしていても エクセルのマクロを起動した時点でエクセルがアクティブになってしまいますので やっぱり「3RVX」は "{END}" を受け取れないのです。 私はこういう場合 SendKeys の直前に SetForegroundWindow (HWND) APIを使って 「3RVX」をアクティブにしています。 必要な HWND (3RVXのハンドル)は GetWindow APIなどを使って調べます。

doopy
質問者

お礼

丁寧な説明で分かりやすかったです。 上の方の方法を先に試したところ、上手くいったので解決しましたが、 親切にご回答して下さり、本当に助かりました。 ありがとうございます!

関連するQ&A

  • エクセルVBAでタイマーコントロールは使えますか

    エクセルVBAでタイマーコントロールは使えますか。 エクセルVBAで、ある時刻になったらマクロを実行させたいと思っています。 無限ループの中にTIME関数で時刻を呼び出し、それをIF文で判定して、 一定時刻にマクロを実行させるものは作りましたが、CPU負荷が高く、24時間 連続で動作させることに不安を感じています。 この他に、VBのタイマーコントロールのような機能を持つオブジェクトや 便利機能等があったら教えていただけませんか。 (一応、VBで時刻管理をするプログラムを作ってそこからエクセルVBAを呼 び出す方法やタスクスケジューラでエクセルVBAを呼び出す方法、ATコマンド 等も考えていますが、可能ならエクセルVBAで閉じて処理をしたい)。 尚、私はWindowsMe+エクセル2000でVBAを作成しています。 実際にVBAを動かすのは、WinsowNT4.0サーバー+エクセル2000を予定してい ます。

  • EXCEL VBA Sendkeys {TAB}

    済みません、EXCELのマクロで自動でタブ移動が出来なく困っています。 いろいろ参考にして作ってみましたが、Sendkeysがセルに対して動作していないようです。 ご教授をお願いします。 Private Sub Tab_Count_Click() Worksheets("音楽リスト").Activate Range("A4:AF8").Select For i = 1 To 3 SendKeys "{TAB}", True MsgBox "OK" Next End Sub

  • vbaでミュートにしたい

    vbaでミュートにしたいのですが http://okwave.jp/qa/q3556093.html の回答No.3さんのご回答の Windows Volume Controller (WVC) のリンクが切れてたので、 -----------------↓ ココカラ ↓--------------------- Sub Sample3()  Shell "sndvol32", vbHide  SendKeys "%(M)", True  SendKeys " ", True  SendKeys "%{F4}", True End Sub '-----------------↑ ココマデ ↑--------------------- をやってみようとしたら、 Shell "sndvol32", vbHide でファイルが見つかりません。になりました。 sndvol32を実行するには、何をインストールすればいいのでしょうか? 当方エクセル2010、win7です。

  • エクセルからメール送信

    エクセル2000 Outlook2000です。 エクセルでメールを送信する段階までは以下のコードできるのですが、このマクロで生成されたメールを、送信前にメッセージファイル(*msg)として保存することは出来ないものでしょうか? VBAでも手動でもかまいません。 Sub test01() If Application.MailSystem <> xlMAPI Then MsgBox "この機能を使用するためには MAPI対応のメーラーが必要です。", vbCritical Else ActiveSheet.Copy After:=Sheets(Sheets.Count) Set ns = ActiveSheet With ns .DrawingObjects.Delete .Cells.Validation.Delete End With SendKeys "%FDM", True End If End Sub

  • Excel VBAエラー”マクロシートに対する・・

    Excel VBAを勉強している者です。VBAプログラムで Sub Iro1() ・・・ End Sub Sub Iro2() ・・・ End Sub という処理のプログラムを作成しエクセルシートにボタンを作りマクロ登録をしようとすると ”マクロシートに対する参照を指定ください”とエラーが出ます。 すみませんが、解決方法を教えてください。

  • Sendkeyでステップイン不能?

    VBAで久しぶりにSendkeyを使おうしたところ、ステップインではキーが送られません。 Excelのメニューのツール>マクロ>マクロのボックスを開き、実行ボタンを押せば旨くいきます。 ところがVBエディター上からF8を押してもセンドキーが実行されません。 VBエディターのメニューのツール>マクロから実行ボタンを押しても同じ失敗が起きます。 VBエディターの問題でしょうか? Sub test() Shell "Notepad.exe", 1 SendKeys "A" SendKeys "B" SendKeys "C" End Sub                Excel 2003                WindowsXP sp2

  • Excel VBA で CTRLキーを送る方法

    EXCEL VBA で他のアプリケーションにキーをコードを送り制御したく、Sendkeys を使ってみましたが、CTRLキー(単一キー)の送信が出来ません。Sendkeys "^", 1 では無反応。 制御されるアプリは右のCTRLキーと左のCTLキーではことなった動作をします。出来れば右のCTRLキー、左のCTLキーの送信方を教えてください。 VBAで負荷でしたら、Shell関数で呼び出せるようなものはありませんでしょうか。

  • エクセルでVBAショートカットを作成したいです

    エクセルVBAを使用して、ショートカットキーを作成したいです。 ネットで調べてみた情報を元に、以下のようにマクロを作成しましたが、動作しません。 (やろうとしているのは、Ctrl+Shift+V で値で張り付け です) どのように直したら動作するか教えて頂きたいです。 以下、作成したマクロです。。。 ---------------------------------------------------------------------- Sub auto_open() Application.OnKey "+^V", "値で張り付け" End Sub Sub 値で張り付け() Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub ----------------------------------------------------------------------

  • エクセル VBAが作動しない

    セルの色を変換するVBAとして、標準モジュールに以下のマクロを書き込んでいます。 Sub グレイに() Dim c As Range For Each c In Selection With c.Interior If .Color = RGB(162, 187, 220) Then .Color = RGB(190, 190, 190) End With Next End Sub エクセルに戻って、ctrl+F8で、マクロ名を選んで、実行すれば、実行されるはずなのですが、なぜかきちんと変換されません。 詳しく書くと、何度も何度も「実行」ボタンを押していると、セルの色が指定どおりグレイになるときもあるのですが、特に作動するときと作動しないときに操作の差はありません。 当然ですが、「必ず」実行して欲しいのですが、どこに問題があるのでしょうか? 教えてください。

  • EXCEL VBA ユーザーフォーム内に入力パットを設置する方法について

    EXCEL VBAについて質問があります。うまく説明できるかちょっと自信が無いのですが。 Userformを挿入し、フォーム内にテキストボックスを一個と コマンドボタンを複数設置する。 コマンドボタンはTakeFocusOnClickをFalseにする。 Private Sub CommandButton1_Click() SendKeys "{A}" End Sub これで テキストボックスに「A」という文字が入るはずですが、 このやり方で日本語入力を行い、スペースキーを押して 漢字変換が出来るようにするにはどうしたらよろしいのでしょうか。 SendKeys "{あ}" では確定された「あ」が入力されてしまい、 スペースキーを押しても変換が出来ません。 SendKeys "{a}" だと変換は出来るのですが、あ~おまでの母音だけしか入力ができず、か行以降の入力が出来ませんでした。 IMEの設定と関係があるのかなとも思ったのですが、色々いじっても どうもうまく出来ませんでした。 どうぞよろしくお願いいたします。

専門家に質問してみよう