開いているブラウザのURL取得方法を教えてください。

現在開かれているブラウザのURLを全て取得したいのですが、アドレスバー非表示のブラウザのURLが取得できません。
CreateObject("Shell.Application")以外で、既存のブラウザのURLを全て取得する方法はないでしょうか?

OS:Windows7
開発:Access2010
ブラウザ:IE8

Dim objShell As Object
Dim objIE As Object
Dim n As Integer

Set objShell = CreateObject("Shell.Application")
'objShell.Windows.Countでアドレスバー非表示のブラウザだと0が帰ってきます。
For n = objShell.Windows.Count To 1 Step -1
Set objIE = objShell.Windows(n - 1)
If Right(UCase(objIE.FullName), 12) = "IEXPLORE.EXE" Then
Do While objIE.Busy = True
DoEvents
Loop
Debug.Print objIE.Document.URL
End If
Next
Set objIE = Nothing
Set objShell = Nothing

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2011/12/26 17:35:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:TransFreeBSD No.1

回答回数668ベストアンサー獲得回数268

ポイント100pt

アドレスバー非表示のウィンドウが一つでもあるとobjShell.Windows.Countが0を返す、という事なのでしょうか?
状況がよくわからないのですが、objShell.Windows.Countの値が怪しい事はあるっぽいですね(再現できませんでしたが)。
For Eachを使ったらどうでしょうか?

Dim objShell As Object
Dim objIE As Object

Set objShell = CreateObject("Shell.Application")
For Each objIE In objShell.Windows
    If Right(UCase(objIE.FullName), 12) = "IEXPLORE.EXE" Then
        Do While objIE.Busy = True
            DoEvents
        Loop
        Debug.Print objIE.Document.URL
    End If
Next
Set objIE = Nothing
Set objShell = Nothing
  • id:indp01
    ご回答ありがとうございます。

    >アドレスバー非表示のウィンドウが一つでもあるとobjShell.Windows.Countが0を返す、という事なのでしょうか?
    アドレスバー非表示のウィンドウがカウントの対象になっていません。
    Ex, googleトップページ・アドレスバー非表示のウィンドウの場合
      objShell.Windows.Count = 1
    とかえってきます。

    For Each でURLの取得を行いましたが、結果は同じでした。

    また、アドレスバー非表示のウィンドウのみ取得できないと思っていたのですが、右クリック→「新しいウィンドウで開く」で開いたウィンドウのURLも取得できませんでした。
    Ex, googleトップページ・「新しいウィンドウで開く」で開いたウィンドウ
    の2画面を開いている場合
      objShell.Windows.Count = 1
    とかえってきます。
      Document.URLはGooglのURLのみ取得でき、別ウィンドウのURLは取得できませんでした。
  • id:TransFreeBSD
    なるほど。そもそもWindowsコレクションに列挙されない、という事ですかね。
    実は私の環境はWindowsXp、Excel2007、IE8で、これだとアドレスバー非表示でも新しいウィンドウ、新しいタブいずれでもすべて取得できました。Winodows7固有の問題ですかね?
  • id:indp01
    > なるほど。そもそもWindowsコレクションに列挙されない、という事ですかね。
    その通りです。

    別環境で行ったところ全てのURLを取得できました。
      環境:WindowsXp、Office2010、IE8

    やはり、Windows7に問題がありそうです。

    現在、Microsoftに問合せ中です。

    原因が解り次第報告致します。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません