• 締切済み

マクロで1ファイルに複数の文字コードで出力する方法

研究室で使用しているツールの文言表示用の テキストファイルを出力するようにマクロを組んだエクセルファイルが有るのですが、 2年続けて中国人の方が研究室に入ってきたため ツールを中国語化しようとツールとエクセルファイルをメンテしているのですが ツールの構造と動作環境の関係から出来たら 日本語→shift-jis 中国語(繁)→big5 中国語(簡)→GB2312 の各文字コードで1つのファイルにまとめて出力したく試行錯誤していたのですが うまい方法が見つからず困っています。 何かヒントになりそうな事柄でもいいので情報お持ちの方が居ましたらお願いします。 ---------------------------------------- ◆シート側 ┏―┳―――┳―――┳―――┓ |ID|日本語|繁体字|簡体字| ┣―╋―――╋―――╋―――┫ |01| 開始 | 開始 | 开始 | ┣―╋―――╋―――╋―――┫ |02| 終了 | 結束 | 结束 | ┣―╋―――╋―――╋―――┫ |03| 編集 | 編輯 | 编辑 | ┗―┻―――┻―――┻―――┛ ・ ・ ・ ◆出力したいテキストファイル 01J  開始 01C1 開始 01C2 开始 02J 終了 02C1 結束 02C2 结束 03J 編集 03C1 編輯 03C2 编辑 ・ ・ ・ ◆コード概要 ※概要説明用に簡略してるので多少変なところがあるかも知れません ファイル出力部分です Dim FileNum As Long Dim text As Object ’オブジェクトを宣言 Set text = CreateObject("ADODB.Stream") ’ADODB.Streamを使用 text.Type = adTypeText text.Charset = "shift-jis" ’文字コード設定 For FileNum = 0 To (SheetCount) ’全シートを対象にシートごとにファイルを出力 text.Open Count = 0 Do While Count < lItemNum(FileNum) ’各シートにおける項目数分 text.WriteText Output(FileNum, Count) ’Outputにシートから読込み出力用に形を整えた全ての文言が入ってます Count = Count + 1 Loop text.SaveToFile ("C:\TEST.txt"), adSaveCreateOverWrite text.Close Next FileNum Set text = Nothing ここでファイルに追記する形にすれば出来るのでは!? とかも 考えたのですがこの出力方法における追記方法が 出力済のデータを再度読み込み、その末尾に新たなデータを追加し 全て出力し直すといった方法しか見つけられなかったため、 結局1種類の文字コードでしか出力できませんでした。 1つのファイルに複数の文字コードでの出力は無理なんでしょうか?

みんなの回答

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.2

>とのことですが具体的にどのような手順で実現できるのか >ご教授いただけないでしょうか? すいません、私はVBAは読める程度なので具体的な手順までは示せません。 StrConvを第3引数のLCIDまで指定すれば各文字コードに対応したバイナリ(バイト配列)に変換できるんじゃないかとは思いますが。

janjap
質問者

お礼

お礼が遅くなりすいませんでした。 今回はご回答いただきありがとうございました。 頂きましたアドバイスを参考に もう少し自分でも確認してみます。 ありがとうございました。

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

自前でテキストをバイナリに変換すれば可能だと思いますけど、UTF-8で保存した方が簡単になったりしませんか?文言表示ツールにも手をいれないといけないかもしれませんけど。

janjap
質問者

お礼

回答いただきありがとうございます。 確かにUnicodeで出力、表示した方が確実なのですが 同一のテキストを複数のツールで共通して使っているため ツール側をUnicodeに対応させようとすると 結構な手間になってしまうため出来るだけファイル側で 対応したく思っております。 > 自前でテキストをバイナリに変換すれば可能 とのことですが具体的にどのような手順で実現できるのか ご教授いただけないでしょうか? よろしくお願いします。

関連するQ&A