• ベストアンサー

vbaから他のアプリを終了

エクセルVBAから他のアプリを終了するマクロを書きたいのですが、途中で行き詰ってます。 Sub test() Dim h As Long h = FindWindow(vbNullString, "タイトル") Call SendMessage(h, 0, 0, "ALT+{F4}") End Sub FindWindowでハンドルを取得してALT+F4を送ればいいじゃないかと思ってますが ALT+F4の送り方がわかりません。どなたか教えてください。 また、ほかに良い方法があれば併せてご提案くださると幸甚です。 よろしくお願いします。 -- エクセル2003

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

  • ベストアンサー
回答No.1

そこまでできているのなら下記のように変更して見て下さい。 VB6.0 用のコードをそのまま転記していますがご理解頂けるかと。 Private Sub hwndAcquire() 'ハンドル取得及び終了処理のサブプロシージャ   Dim hwnd As Long   Dim ret As Long   If Len(strClassName) Then     'クラス名を与えてハンドルを取得     '起動中ならハンドルが返り、起動していなければ 0 が返る     hwnd = FindWindow(strClassName, vbNullString)   ElseIf Len(strCaptionName) Then     'キャプション名を与えてハンドルを取得する場合     'strCaptionName = "Microsoft Excel - Book1"  '電卓の場合  "電卓"     hwnd = FindWindow(vbNullString, strCaptionName)   End If   '指定のハンドルに終了のメッセージを送る   ret = SendMessage(hwnd, WM_CLOSE, 0&, 0&) End Sub

lelion1000
質問者

お礼

おっしゃ。新年一発目の疑問が解決しました。 ありがとうございました。