WebサイトからデータをExcelに取得する方法③
みなさん、こんちには!
前回の文字化けを解決して行きましょう。
今回は、ADODB.Stream を使った文字コードの変換をしてみます。
「ADODB.Streamオブジェクト」を CreateObject関数で生成する。
準備が整いましたので、変換してみましょう。
With Strm
.Open
.Position = 0
.Type = 1 'adTypeBinary
.Write web_con.responseBody
.Position = 0
.Type = 2 'adTypeText
HTML_str = .ReadText
.Close
End With
前回の web_con.responseText から web_con.responseBody に変わっているのに、気付かれたと思います。返り値が違うのです。
ADODB.Stream を順を追ってコメントしていきます。
.Open ADODB.Stream を開きます。
.Position = 0 カーソルを一番最初に移動する。
.Type = 1 バイナリモードに設定する。
.Write web_con.responseBody バイナリデータを書き込み
.Position = 0 カーソルを一番最初に移動する。
.Type = 2 テキストモードに設定する。
.Charset = “EUC-JP” 文字コードを EUC-JP に設定する。
HTML_str = .ReadText EUC-JP で訳したテキストを読み出す。
.Close ADODB.Stream を閉じる。
今回出来上がったコードを表示します。
Dim HTML_str As String
Dim web_con As Object
Dim Strm As Object
Set web_con = CreateObject("MSXML2.XMLHTTP")
Set Strm = CreateObject("ADODB.Stream")
web_con.Send
Do While web_con.readyState < 4
DoEvents
Sleep 1
Loop
With Strm
.Open
.Position = 0
.Type = 1 'adTypeBinary
.Write web_con.responseBody
.Position = 0
.Type = 2 'adTypeText
HTML_str = .ReadText
.Close
End With
Debug.Print HTML_str
次回は、今回のコードを使って https://www.rakuten.co.jp/ から必要なデータを取得して見たいと思います。