2015年2月1日日曜日

IE+VBAで仕事を効率化〜新しいページを捕まえる Catch a new web page

foxman
Foxman
 VBAでIEを制御するとき、IEで新しいウィンドウが開かれる場合、そのウィンドウのIE(例えば your-web-page-title-1というタイトルを持つページ)を捕まえないとIEを制御できない。
   IEの制御が思ったとおりにできないときには、この「新しいページが作られている」という可能性を考えてみるとよい。

 その新しいページの IEを捕まえるコードが、こんな感じ。


The following codes enable you to get the control of the new IE window while a new window like "your-web-page-title-1" is open by JavaScript.   
    Set objIE = Nothing
    Set objShell=CreateObject("Shell.Application")
    For Each objWindow in objShell.Windows
      If TypeName(objWindow.document) = "HTMLDocument" Then
        Set objIE = objWindow
        Debug.Print objIE.Doucument.Title 
        If objIE.document.Title = "your-web-page-title-1"  Then Exit For
      End If
    Next
    
    1行目は、新しいIEページの内容へアクセスするための変数objIEを初期化(ゼロクリア)。
    2行目は、新しいIEページ(=ウィンドウ)を探す際、ウィンドウを巡回するための変数objShellをセット。
    3行目は、新しいIEページ(=ウィンドウ)を含む、全てのウィンドウをたぐるためにFor Each文で、9行目のNext文までで、目的のページを探す。
    4行目のIf文で、IEページがウィンドウタイプ=HTMLDocumentであることを利用して見つける。ここがポイント。
    5行目で、見つけたウィンドウを新しいIEページとして、設定。
    6行目は、デバッグのための文で、IEページのタイトルをVBAのデバッグ用エリアに出力。
    7行目のIf文で探しているタイトルを持つページかを判定し、そうであれば、For Eachのループを脱出する。そうでなければ、次のウィンドウをたぐる。これをウィンドウがあるだけ、繰り返すことになる。

     ここで、ちょっと一息。おいしい枝豆レシピ。

    ・枝豆の両端をカット(湯がとおるように)
    ・よく洗う
    ・塩をまぶし、しばらく、置く
    ・塩水でゆでる。塩の量は、4%。1500ccの水なら、60g
     (まぶすときに使う分も含む)

    I would like to introduce my favorite Japanese cuisine "edamame". Let me explain a recipe for cooking tasty edamame. First, cut both ends off the pods and wash until clean. Then, stir in some salt, leave for a awhile, and then boil for 4 minutes in a big pan of salted water. The salt should be 4 % all the water (including when stirring); for example, 60 grams of salt for 1500 cc of water.

    0 件のコメント:

    コメントを投稿