VBA Stringに代入したら文字化け?


Kazoo  2007-01-25 10:32:08  No: 134996

はじめまして。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に代入したタイミングで文字化けしているものと思われます。が、私の表現力不足によりここからどのように回避すればよいのか困っております。どなたか、上記問題の原因、回避方法をご教示願えますでしょうか。長文申し訳ありません。


kazoo  2007-01-25 10:35:26  No: 134997

post後の画面を見てびっくり。
読みにくくてしょうがないですね。
申し訳ありません。以後気をつけます。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加