IEのアクティブウィンドウを掴む
未読分:2件
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
Message#2 2014年11月17日(月)15時39分 From: ブニャット | 返事 削除 変更 |
いろいろネットサーフィンした結果、自己解決しました。 お騒がせしてすみません。 一応分かったコードをここに貼っておきます・・・。 Sub test() Dim hwnd As Long Dim ie As Object ’エクセル4.0のマクロでアクティブなIEのハンドルを変数に代入 hwnd = CreateObject("Excel.Application").ExecuteExcel4Macro("CALL(""user32"",""FindWindowA"",""JCJ"",""IEFrame"",0)") ’開いてるshellアプリ分回してハンドルが一致するものを検索 For Each ie In CreateObject("Shell.Application").Windows() If hwnd = ie.hwnd Then ’IEがタブで開かれている場合ハンドルでは区別できないので、 ’ステータステキストを入れていく。 ’アクティブなタブであれば代入できるので、それが最前列のIE ie.statusText = CStr(hwnd) If ie.statusText = CStr(hwnd) Then Exit For End If Next If IsEmpty(ie) Then MsgBox "Not Found" Else MsgBox ie.LocationURL End If End Sub |
Message#1 2014年11月14日(金)16時04分 From: ブニャット | 返事 削除 変更 |
いつもお世話になっております。 最前面に表示されているアクティブなIEをつかみたいのですが、 どうすればいいでしょうか。 (厳密には最前面に開いているアクティブなウィンドウの中の アクティブなタブです) 試しに下記のようにやってみましたが、 @のところで案の定エラーになりました。 また、@をDebug.Print obj.Windows(0)のように 番号で指定すると起動した順になってしまい 思ったような動作をしません。 Sub shell_test() Dim obj As Object Set obj = CreateObject("shell.application") Debug.Print obj.ActiveWindow ’@ End Sub Setforegroundwindow関数で指定したIEを アクティブにできるところまでは分かったのですが、 その逆がやりたいです。 何か解決策があればよろしくお願いします。 |
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降