エクセルVBA IE操作 ③IEを使ってサイトの表示 の続きです。

インターネットを操作するには、URLが完全に開くまで待つ処理が必要です。

ネットの込み具合、自分のパソコンの性能などで、何秒かかるかは未知数です。

 

Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate "https://login.post.japanpost.jp/aew/page/portalVerify"

objIE.Visible = True

の後
Do Until objIE.Busy = False
Application.Wait Now + 1 / 24 / 60 / 60 / 10
Loop
この3行です。

objIE.Busy = False は、IEがサイトを更新中であるか、を判定しています。

 

Application.Wait Now + 1 / 24 / 60 / 60 / 10 の

1 / 24 / 60 / 60 / 10 は時間で、0.1秒に相当します。

実は、この行は省略していただいても結構です。

Do Until objIE.Busy = False
Loop

では、頻々にLoopが繰り返されるので、パソコンの負担を減らすのに

0.1秒くらいまってやるか、程度です。代わりに

DoEvent を使ったり

Sleep(100) を使ったりしても大丈夫です。

※Sleep関数を使うには、モジュールの最初に

 Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

 を記述して、モジュール内でSleep関数が使える様にしておきます。

この3行が終了して時点で、希望のURLが完全に表示された事になるのです。

次に、やりたいことをコードで記述します。

この部分が厄介です。

※OutLookをエクセルから操作した際には、気にしなくても良かったなのが

  IE(InternetExplorer)では、ここに気を使います。

URLの内容によって、さまざまです。紹介した基本コードでは出来ない場合も多々あります。