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でなくてもいいのですが
何かいい方法はありますでしょうか。
初めて質問します。
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
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
>
■[返信 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が無いので検証できないし次のアドバイスも難しいので
他の方回答をお待ち下さい。
>ほぼ全く同じ内容の処理をしています。
>違うところと言えば、httpsであることくらいです。
どこがほぼ全く同じなの?
少なくともライブラリを利用していますが、
ライブラリを追加して処理しても文字化けするのですか?
こちらでは、実DATAが無いので検証できないし次のアドバイスも難しいので
他の方回答をお待ち下さい。
当掲示板について
- Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
- 記事内ではHTMLのタグは使用できません。
- 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
- Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
- Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
( 処理日時 : 2025-07-03 16:59:31 )