エクセル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の内容によって、さまざまです。紹介した基本コードでは出来ない場合も多々あります。