はじめまして。kazooと申します。
Excel2003のVBAを使用しているのですが、
以下で困っております。
※業務上、ソースが持ち出せない為、また環境が家にない為
記憶を辿り打鍵しております。打ち間違え等ございましたら
ご容赦ください。
・環境
サーバ
java 1.4.2
クライアント
Excel2003Pro
採用エンコード
UTF-8 ※DBはSJISです。
・やりたいこと
Excel2003からの機能「XML対応付け」を使用し、VBAから
対象のデータをxmlで取得後、postでサーバへ送信。
・困っている現象
Excel上に1バイト文字のみを入力し、上記コードを実行した場合は、
問題なく完了。2バイト文字を入力した場合サーバ側でxmlをパースできずに例外発生。
以下ソース------------------------
Dim xmlData As String
Dim xmlMap as XMLMap
Dim xmlHttp as MSXML2.XMLHTTP
Set xmlMap = ThisWorkbook.XMLMaps("対象スキーマ")
xmlMap.exportXml xmlData
Msgbox xmlData '(1)
'xmlMap.export "C:\bar\xmlData.xml" '(2)
Set xmlHttp = CreateObject("MSXML2.XMLHTTP.5.0")
xmlHttp.Open "post", "http://foo.co.jp", False
xmlHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xmlHttp.send Variant '←xmlDataの内容をエンコードしてkey=valueでvalueにセットしています。
ここまで----------
・対応調査で以下が判明
サーバ側
valueを取得したら2バイト文字指定部分は空文字(多分見かけ上)。
xml宣言のencodingが無くなっている。
Httpプロクシ
1. 2バイト文字指定部分未調査(すいません。)
2. xml宣言のencodingが無くなっている。
VBA
1. 上記コード中のxmlDataをMsgboxで指定すると2バイト文字指定部分は正常表示。ただし、xml宣言のencodingが無くなっている。
2. XMLMap.exporXmlではなく、exportを使用し直接ファイルに出力した場合、encoding有り。2バイト文字指定部分も正常。ファイルのエンコーディングを秀丸を使用して確認したところUTF-8。
3. XMLMap.exporXmlを使用し、xmlDataに受けた上でファイルに出力したところ、2バイト文字指定部分は正常表示。ただし、xml宣言のencodingが無くなっている。ファイルのエンコーディングを秀丸を使用して確認したところShift-JIS。
Excel
1. メニューの「データ」→「XML」→「エクスポート」を使用しファイルに出力したところencoding有り。2バイト文字指定部分も正常。ファイルのエンコーディングを秀丸を使用して確認したところUTF-8。
・結論
VBAの1,2,3の結果から、Stringに代入したタイミングで文字化けしているものと思われます。が、私の表現力不足によりここからどのように回避すればよいのか困っております。どなたか、上記問題の原因、回避方法をご教示願えますでしょうか。長文申し訳ありません。
post後の画面を見てびっくり。
読みにくくてしょうがないですね。
申し訳ありません。以後気をつけます。
ツイート | ![]() |