重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

現在アクティブなウィンドウを判定し、電卓のウィンドウならマクロを実行させるというようなマクロを組みたいのですが、
If ActiveWindow.Value = ("電卓") Then
これでは「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」となります。
どのように記述したら良いのでしょうか?ご教授よろしくお願いします。

A 回答 (3件)

どういう時に使うのか分かりかねますが、試しにやってみました。

ご参考まで。
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal nMaxCount As Long) As Long

Sub test()
Do
DoEvents
Loop Until windowTitle(GetForegroundWindow()) = "電卓"
MsgBox "電卓がアクティブになりました"
End Sub

Function windowTitle(hwndX As Long) As String
Dim nName As String
Dim nLeng As Long
Dim Ret As Long

nName = String(250, Chr(0))
nLeng = Len(nName)
Ret = GetWindowText(hwndX, nName, nLeng)
If Ret = 0 Then
windowTitle = ""
Else
nName = Left(nName, InStr(nName, Chr(0)) - 1)
windowTitle = nName
End If
End Function
    • good
    • 0
この回答へのお礼

外部から入力されたデータにより、別アプリケーションをsendkeyで操作したかったのですが、 AppActivate ("別アプリケーション")では反応が鈍いので、きちんとアクティブになっている状態でsendkeyで操作したかったんです。わかりづらいですが・・・

大変参考になりました。うまくいきました、ありがとうございました。

お礼日時:2009/11/30 10:16

開いているかどうかでは駄目なのですか?


Windows APIになりますが

ウィンドウハンドル番号を取得する
http://www.happy2-island.com/excelsmile/smile04/ …
    • good
    • 0

何のマクロでしょうか?



エクセルなら、

ActiveWindow.Caption

ではどうですか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!