Excel VBA 質問スレッド №2101 (未解決)

文字コード変換について

投稿者 : 金山     投稿日時 : 2025/03/28(Fri) 15:28:23     OS : 未指定     EXCEL : 未指定
初めて質問します。
Excel VBAを使ってWebAPIの結果をJSONで受け取ってExcelに入力するという処理をしようとしていて
受け取ってExcelに入力はできているんですが、日本語部分が文字化けしてしまいます。
Dim stream As Object
Dim binaryData() As Byte
Set stream = CreateObject("ADODB.Stream")
stream.Type = 2
stream.Charset = "utf-8"
stream.Open
stream.WriteText response
stream.Position = 0
stream.Type = 1
stream.Position = 3
binaryData = stream.Read
stream.Close
Set stream = CreateObject("ADODB.Stream")
stream.Open
stream.Type = 1
stream.Write binaryData
stream.Position = 0
stream.Type = 2
stream.Charset = "Shift-JIS"
response = stream.ReadText
stream.Close
こんな感じで試してみてはいるんですが、
中々うまくいきません。
結果はUTF8で返ってきているはずで、
Excelで正しく表示できればsjisでなくてもいいのですが
何かいい方法はありますでしょうか。

スポンサーリンク
[返信 1] Re : 文字コード変換について
投稿者 : 例えば     投稿日時 : 2025/03/28(Fri) 17:10:22
VBAでJSONを扱うためにJsonConverterというライブラリが必要です
ライブラリをインポートするので、JsonConverter.basをVBAプロジェクトに追加してください。

https://github.com/VBA-tools/VBA-JSON

Sub GetJsonData()
    Dim http As Object
    Dim url As String
    Dim response As String
    Dim json As Object
    Dim ws As Worksheet
    Dim i As Integer

    ' URLの設定
    url = "http://example.com/api" ' ここにAPIのURLを設定

    ' APIにHTTPリクエストを送信
    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "GET", url, False
    http.setRequestHeader "Content-Type", "application/json"
    http.send

    ' レスポンスをUTF-8で取得
    response = http.responseText

    ' JSONの解析
    Set json = JsonConverter.ParseJson(response)

    ' シートに書き込む
    Set ws = ThisWorkbook.Sheets("Sheet1")
    i = 1 ' 行のカウンター

    ' JSONデータをシートに書き込む (例: jsonのキーを列名にして、値をセルに入力)
    For Each item In json
        ws.Cells(i, 1).Value = item("key_name") ' 例: "key_name"を適宜変更
        ws.Cells(i, 2).Value = item("value_name") ' 例: "value_name"を適宜変更
        i = i + 1
    Next item
End Sub

[返信 2] Re : 文字コード変換について
投稿者 : 金山     投稿日時 : 2025/03/28(Fri) 19:12:38
■[返信 1] 例えばさん(2025-03-28 17:10:22)の記事

ご返信ありがとうございます。
ほぼ全く同じ内容の処理をしています。
違うところと言えば、httpsであることくらいです。
それでも文字化けするので、どうやったら解決するかと考えている状況です。

> VBAでJSONを扱うためにJsonConverterというライブラリが必要です
> ライブラリをインポートするので、JsonConverter.basをVBAプロジェクトに追加してください。

> https://github.com/VBA-tools/VBA-JSON

> Sub GetJsonData()
> Dim http As Object
> Dim url As String
> Dim response As String
> Dim json As Object
> Dim ws As Worksheet
> Dim i As Integer

> ' URLの設定
> url = "http://example.com/api" ' ここにAPIのURLを設定

> ' APIにHTTPリクエストを送信
> Set http = CreateObject("MSXML2.XMLHTTP")
> http.Open "GET", url, False
> http.setRequestHeader "Content-Type", "application/json"
> http.send

> ' レスポンスをUTF-8で取得
> response = http.responseText

> ' JSONの解析
> Set json = JsonConverter.ParseJson(response)

> ' シートに書き込む
> Set ws = ThisWorkbook.Sheets("Sheet1")
> i = 1 ' 行のカウンター

> ' JSONデータをシートに書き込む (例: jsonのキーを列名にして、値をセルに入力)
> For Each item In json
> ws.Cells(i, 1).Value = item("key_name") ' 例: "key_name"を適宜変更
> ws.Cells(i, 2).Value = item("value_name") ' 例: "value_name"を適宜変更
> i = i + 1
> Next item
> End Sub


[返信 3] Re : 文字コード変換について
投稿者 : 例えば     投稿日時 : 2025/03/29(Sat) 08:26:03
>ほぼ全く同じ内容の処理をしています。
>違うところと言えば、httpsであることくらいです。

どこがほぼ全く同じなの?

少なくともライブラリを利用していますが、
ライブラリを追加して処理しても文字化けするのですか?
こちらでは、実DATAが無いので検証できないし次のアドバイスも難しいので
他の方回答をお待ち下さい。

当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2025-07-03 16:59:31 )
タイトルとURLをコピーしました