[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAでieのアクティブなタブの情報を取得するには』(d_ue)
いつも、参考にさせていただいています。 インターネットエクスプローラーのアクティブなタブについてだけ、urlを取得したいのですが、どうすればいいのでしょうか。
開いているすべてのタブのurlを取得するのは、 [[20070425105449]]『開いているWEBページのURL、タイトルを取得したいです。』(カービー)
にありました。
しかし、いくつも開いているタブのうち、選択している1つのタブだけurlを取得したい場合、どのようにすればよいのでしょうか?
よろしくお願いいたします。Excelは2002、OSは、windowsXPです。ieは8です。
> Excelは2002です。OSは、windowsXPです。
IE のバージョンも書かれたほうがよろしいかと思います。
(とおりすがり)
標準モジュールに
'================================================================== Option Explicit Private Declare Function GetForegroundWindow Lib "USER32" () As Long Dim ss Sub test() Dim ie As Object Dim hWnd As Long On Error Resume Next ss = 0 Do While ss = 0 hWnd = GetForegroundWindow Set ie = Chk_Active_ie(hWnd) If Err.Number <> 0 Then Exit Do If Not ie Is Nothing Then Exit Do DoEvents Loop If Not ie Is Nothing Then MsgBox ie.LocationURL End If End Sub '============================================================================== Function Chk_Active_ie(c_Hwnd As Long) As Variant Dim wn As Object Dim g0 As Long Set Chk_Active_ie = Nothing
For Each wn In CreateObject("shell.application").Windows g0 = g0 + 1 If wn.hWnd = c_Hwnd Then Set Chk_Active_ie = wn Exit For End If Next If Chk_Active_ie Is Nothing And g0 = 0 Then Chk_Active_ie = False End If End Function '=========================================================================== Sub end_chk() ss = 1 End Sub
上記testを実行後、最初に選択したIEが表示しているURLをセルA1に書き込みます。
尚、end_chkは、ループの停止用
留意点 testを実行する前にひとつもIEが開いていないと、 プログラムは直ちに終了してしまいます。
こういうことですか?
ichinose
試してみると、現在アクティブになっているieのurlでなく、最初に立ち上げたieのurlがメッセージboxで表示されました。
やはり、難しいのでしょうか?
>現在アクティブになっているieのurlでなく、最初に立ち上げたieのurlがメッセージboxで表示されました。 ん?これは、サンプル的なコードです。
確認するには、
まず、対象となるIEをいくつか(三つでも四つでも・・)立ち上げて、それなりのサイトを表示させておきます。
この状態でExcel上のマクロを「ツール」--「マクロ」--「マクロ」とクリックし、testを実行します。
ですから、最初は、Excelがアクティブになっているはずです。
ここから、すでに立ち上げてある適当なIEを選択するのです。 すると、選択したIEのURLが表示されるはずです。
このことから、GetForegroundWindowで得られるウインドーハンドルとそれぞれのIEのウインドーハンドル を比較することでアクティブなIEが取得できるというロジックです。
後は、ご自分の仕様に合わせて監視ロジックを考えるのですよ!!
ichinose
恐らくご質問者のIEはヴァージョンが7.0以降(タブブラウザ)で、アクティブなタブのURLがほしいみたいです。
(川野鮎太郎)
>アクティブなタブのURLがほしいみたいです。 そういうことでしたか!! だとしたら、環境がないので、他の方の投稿を待ってください
ichinose
ネット上を検索してみたら、以下のようなものがあったので応用できそうです。 http://app.m-cocolog.jp/t/typecast/221427/189040/59273927 IE.StatusTextってので判断するようです。
(川野鮎太郎)
いろいろとありがとうございます。
まだ解決できていませんが、がんばってみます。
(d-ue)
↑ この書き込みは、最近のものなんですかね?
じゃないとすると、何で今頃ここに上がって来たんでしょう。 時々ある現象なんですが、どなたの仕業?
トピ立て日から1ヶ月以上経過したレスは、 書き込み日を入れると云うルールに出来ないもんでしょうか? (私は、活きている質問しか興味が涌かないので)
(半平太) 2011/05/09 13:51
>この書き込みは、最近のものなんですかね? いや、(d-ue) さんの書込は最近の物では無いハズです。
差分で見た時に、その下に有った投稿が削除されていたので その下の投稿がいつなされたものだったのか分かりませんが。。。 少なくとも、その投稿の削除で上がったのだと思います。
(HANA)
>その投稿の削除で上がったのだと思います。
(投稿したかなんかした後で)削除だったんですか・・・ 納得出来ました。m(__)m
(半平太) 2011/05/09 14:35
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.