プロが教えるわが家の防犯対策術!

お世話になります。
VBAで、MSXML2.XMLHTTPオブジェクトを利用して、httpリクエストを送り、価を取得しています。英数字はいいのですが、responsetextメソッドを利用しても、日本語は\u682a\u5f0fのように文字化けしてしまいます。(ちなみにUTF-8で戻ってくると仕様書にはありました)
文字変換にADODB.Streamを利用すればいいのかと思って利用して、さまざまな文字コードで試しましたが駄目でした。
どなたかどうしたら正しい日本語になるのかご教示いただければ大変助かります。
その他、VBAを利用して、Httpリクエストを送り、あたいを取得する良い方法がありましたら、教えていただければ大変助かります。

どうぞよろしくお願いいたします。

A 回答 (2件)

駄目かもしれませんが、そうでしょうか。



Sub sample()
Dim url As String
Dim http As Object
Dim st As Object
Dim cs As String
Dim txt As String
'
url = "http://localhost/test.html" '目的のurl
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", url, False
http.Send
Set st = CreateObject("ADODB.Stream")
st.Open
st.Type = 1 'adTypeBinary
st.Write http.responseBody
st.Position = 0
st.Type = 2 'adTypeText
cs = Split(Split(http.responsetext & "charset=""", "charset=""")(1), """")(0)
If cs = "" Then cs = "utf-8"
st.Charset = IIf(cs = "", "utf-8", cs)
txt = st.readText
st.Close
MsgBox txt
End Sub





文字化けする場合は

>st.Charset = IIf(cs = "", "utf-8", cs)



st.Charset = "sjis"

で試してみてください。
    • good
    • 0
この回答へのお礼

ご教授ありがとうございました。
WEBページの場合はそのように取得するんですね。
今回はWebAPIだったのでご指摘のタグはありませんでした。
でもVBAのchrw()関数を利用して無事に変換できました。

お礼日時:2019/10/22 17:15

回答が付かないようなので、使った事は無いですが検索してみました。

ここは参考になりますか?

https://detail.chiebukuro.yahoo.co.jp/qa/questio …

https://accountingse.net/2010/09/212/

windows10ではMSXML2.XMLHTTPオブジェクト使えなくなったようです。

>その他、VBAを利用して、Httpリクエストを送り、あたいを取得する良い方法がありましたら、教えていただければ大変助かります。

良いかどうかは、解りませんがよく聞くのは、IEなどブラウザを操作して、ソースのタグなどを参照して内容を抽出するものですかね。
HTMLの知識が必要になりますが。(私はこのやり方です)
    • good
    • 0
この回答へのお礼

ご教授ありがとうございました。
WEBページの場合はそのように取得するんですね。
今回はWebAPIだったのでご指摘のタグはありませんでした。
でもVBAのchrw()関数を利用して無事に変換できました。

お礼日時:2019/10/22 17:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています