WebサイトからデータをExcelに取得する方法②
みなさん、こんちには!
前回に引き続き、 WebサイトからExcelを使ってデータを取得 していきます。
今回は、 ステータスを取得し状態を確認してからデータを取得する方法 です。
下記は、前回までのコードです。これに状態を確認して読み込み完了するまで待機するコードを追加していきます。
Dim web_con As Object
Set web_con = CreateObject("MSXML2.XMLHTTP")
web_con.Send
readyStateプロパティを使って読み込み完了の状態になるまで確認を繰り返すコードを見てみましょう。
Do While web_con.readyState < 4
DoEvents
Sleep 1
Loop
web_con.readyState < 4 の 「4」は、 読み込み完了 を表す定数になります。
Sleep 1 は、1ミリ秒を停止するWindows API関数になります。
VBAには Application.Wait メソッドがあるのですが、何時になるまで停止すると言う意味になります。単位も基本的には秒単位になります。これを同じ1ミリ秒を停止するコードを表すと下記になります。
1ミリ秒を表すのみ1ミリ秒/1日になります。コードの見た目なのか秒単位しか出来ないと勘違いなのかは分かりませんが、 Sleep 1 の方が良く使われている様です。
ただし、API関数を使う為には別のコードが必要になります。下記に表示します。
#If VBA7 Then
Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr)
#Else
Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)
#End If
いよいよデータの取得になります。
responseText プロパティを使ってテキストで取得するコードが下記になります。
実行してみましょう。
Dim HTML_str As String
Dim web_con As Object
Set web_con = CreateObject("MSXML2.XMLHTTP")
web_con.Send
Do While web_con.readyState < 4
DoEvents
Sleep 1
Loop
HTML_str = web_con.responseText
Debug.Print HTML_str