
お世話になります。
VBAで、MSXML2.XMLHTTPオブジェクトを利用して、httpリクエストを送り、価を取得しています。英数字はいいのですが、responsetextメソッドを利用しても、日本語は\u682a\u5f0fのように文字化けしてしまいます。(ちなみにUTF-8で戻ってくると仕様書にはありました)
文字変換にADODB.Streamを利用すればいいのかと思って利用して、さまざまな文字コードで試しましたが駄目でした。
どなたかどうしたら正しい日本語になるのかご教示いただければ大変助かります。
その他、VBAを利用して、Httpリクエストを送り、あたいを取得する良い方法がありましたら、教えていただければ大変助かります。
どうぞよろしくお願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.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"
で試してみてください。
ご教授ありがとうございました。
WEBページの場合はそのように取得するんですね。
今回はWebAPIだったのでご指摘のタグはありませんでした。
でもVBAのchrw()関数を利用して無事に変換できました。
No.1
- 回答日時:
回答が付かないようなので、使った事は無いですが検索してみました。
ここは参考になりますか?https://detail.chiebukuro.yahoo.co.jp/qa/questio …
https://accountingse.net/2010/09/212/
windows10ではMSXML2.XMLHTTPオブジェクト使えなくなったようです。
>その他、VBAを利用して、Httpリクエストを送り、あたいを取得する良い方法がありましたら、教えていただければ大変助かります。
良いかどうかは、解りませんがよく聞くのは、IEなどブラウザを操作して、ソースのタグなどを参照して内容を抽出するものですかね。
HTMLの知識が必要になりますが。(私はこのやり方です)
ご教授ありがとうございました。
WEBページの場合はそのように取得するんですね。
今回はWebAPIだったのでご指摘のタグはありませんでした。
でもVBAのchrw()関数を利用して無事に変換できました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスVBAのMe!と[ ]
-
文字列で小数点以下の0を削除し...
-
日本語の文字化けを直す方法
-
ユーザーフォームのインポート...
-
Bitmap.GetPixelより高速なもの
-
VBA エンターキーでイベントに...
-
Excel VBAでマウスの左クリック...
-
pictureBoxの絵保存について。
-
VBAで選択範囲外の図形(オブジ...
-
Accessのフォーム上にエクセル...
-
【エクセル】複数のTextBoxに共...
-
「ご処理進めて頂きますようお...
-
UPS警告音を止めたい
-
CloseとDisposeの違い
-
エクセルで、日付を入力すると...
-
エクセルVBAで、MsgBox やInput...
-
DoEventsがやはり分からない
-
【Excel】特定の文字を含むセル...
-
VBAでループ内で使う変数名を可...
-
EXCEL VBA マクロ 実行する度に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アクセスVBAのMe!と[ ]
-
VBA エンターキーでイベントに...
-
ChexBox1等の「1」を変数にで...
-
Excel VBAでマウスの左クリック...
-
【エクセルのマクロ】クリップ...
-
Accessのフォーム上にエクセル...
-
文字列で小数点以下の0を削除し...
-
【エクセル】複数のTextBoxに共...
-
日本語の文字化けを直す方法
-
エクセルVBAでセル番地を指定し...
-
ExcelのシートをAccessで表示し...
-
サブルーチンにオブジェクト名...
-
Excel2007 でのチェックボック...
-
コードでオブジェクトを最前面に
-
ユーザーフォームのインポート...
-
現在アクティブになっているオ...
-
クリスタルレポートのプレビュ...
-
Bitmap.GetPixelより高速なもの
-
vba ユーザーフォームのテキス...
-
Imageコントロールにグラフを表...
おすすめ情報