みなさん、こんちには!
前回の文字化けを解決して行きましょう。
今回は、ADODB.Stream を使った文字コードの変換をしてみます。
「ADODB.Streamオブジェクト」を CreateObject関数で生成する。
準備が整いましたので、変換してみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 |
With Strm .Open .Position = 0 .Type = 1 'adTypeBinary .Write web_con.responseBody .Position = 0 .Type = 2 'adTypeText .Charset = "EUC-JP" 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 を閉じる。
今回出来上がったコードを表示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
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.Open "GET", "https://www.rakuten.co.jp/",False 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 .Charset = "EUC-JP" HTML_str = .ReadText .Close End With Debug.Print HTML_str |
次回は、今回のコードを使って https://www.rakuten.co.jp/ から必要なデータを取得して見たいと思います。
コメント