読者です 読者をやめる 読者になる 読者になる

三流君 ken3のmemo置き場

メモ置き場、保管庫として利用。まとまっていませんがヨロシク



XXXXXさんへ 新規に起動したIEを見つけるサンプル

>リンクをクリックし開いたポップアップに、
>for each objTAG in objIE...系の処理をしたいのですが、
>objIEが親ページを参照しているためうまくいきません。
>objIEをアクティブページにするには、どのようにすればいいのでしょうか。

と質問をいただく。

私が作成したサンプルで、

似ている処理は、
http://ken3hitori.g.hatena.ne.jp/bbs/28/?from=1#1333152216
↑かなぁ?

'今度は、入出金メニュー(新しく開いたIE)を探す

    Dim objIE_I  '入出金メニュー用

    'シェルのオブジェクトを作成する
    Set objShell = CreateObject("Shell.Application")

    Set objIE_I = Nothing    
    'ウインドウの数だけまわすぞ
    For Each objWindow In objShell.Windows
        'TypeNameでオブジェクト変数のタイプを表示する
        'HTMLDocumentだったら
        If TypeName(objWindow.document) = "HTMLDocument" Then
           If InStr(objWindow.document.Title, "入出金メニュー") > 0 Then
               Set objIE_I = objWindow '見つけたウインドウを(IE)を代入
               Exit For   
           End IF
        End If
    Next
    Set objShell = Nothing

    '見つけたかチェック
    If objIE_I Is Nothing Then
        msgbox "エラー 入出金メニューが見つかりません"
        wscript.quit
    End If   
'-----------------

みたいな感じで、新しく開いたIEを探しています。

パターン的には、
CreateObject("Shell.Application")

.Title

.URL
で探していたりします。

http://www.ken3.org/vba/backno/vba156.html
など...

きれいにイベントでやる人
http://www.ken3.org/vba/backno/vba163.html
を使ったりしますが

最近は手抜き
http://d.hatena.ne.jp/ken3memo/20090604/1244142121
みたいに
'起動した IE が 必ず 絶対 一番後ろ と決め付けて(プログラマーに絶対は無いだろクソ三流)
Set newIE = objSHELL.Windows(objSHELL.Windows.Count - 1)
'↑配列が0からなのでカウント-1 一番後ろのWindowをobjIEに代入
で、手抜きでチェックしないで使っていたりします。(ぉぃぉぃ)

サンプルのうちどれかが問題解決の糸口となれば...と思いつつ失礼します。
三流プログラマー Ken3

PS.アクティブページの意味を 新規IEを決めつけてしまいましたが、
  勘違い、質問の意味を取り違えていたらスミマセン...