DOBON.NET DOBON.NETプログラミング掲示板過去ログ

テキスト出力時に「?」

環境/言語:[Excel2002]
分類:[その他]

お世話になります。

中国語で作成されたExcelファイルの内容をテキストに吐き出す
マクロで悩んでいます。

テキスト出力は、OPENメソッドとPRINTメソッドを使用しています。
その結果が、中国語の部分が「?」に変換されてしまします。

※中国語環境で作成されたExcelファイルを日本語環境でマクロ
 実行しテキストファイルを作るというものです。

ADODB.Streamオブジェクトなどを使用して文字コードをUnicodeに
指定して出力するのでしょうか?

どなたか対応方法をおしえてください。
よろしくお願い致します。
> テキスト出力は、OPENメソッドとPRINTメソッドを使用しています。
> その結果が、中国語の部分が「?」に変換されてしまします。
OPENメソッド、Printメソッドではなく、
Openステートメント、Printステートメント、ですよね。

Printステートメントは、日本語環境では、「Shift_JIS」形式で出力されます。
当然、Shift_JISテキストでは中国語の文字を扱うことができませんので、
中国語対応のエンコーディングで出力する必要があるでしょう。


UTF-16/UCS-2での出力でよいなら、文字列をStringではなく、Byte配列で
受け取るようにし、それを Binaryモードで開いたファイルにPutしてやれば、
対処することができます。もしくは、FileSystemObjectの機能を使い、
TextStream経由でUnicodeテキストを作成されても良いでしょう。

> ADODB.Streamオブジェクトなどを使用して文字コードをUnicodeに
> 指定して出力するのでしょうか?
そうですね。Streamオブジェクトを利用する手法もあるかと思います。
この場合、データに日本語が含まれないなら、Unicode の代わりに、
Big5 や GB2312 といった、中国語系の文字コードも利用できるかと。

# 実際にどのエンコーディングで出力すべきは、そのテキストの利用者に
# 確認してください。
魔界の仮面弁士さん、ありがとうございます。

> Openステートメント、Printステートメント、ですよね。
そうでした、お恥ずかしい…。

ADODB.Streamオブジェクトを利用してUnicodeテキストを出力しようと
試していたのですが、どうにもテキストを追記する方法がわかりません。
※Openステートメント(Appendモード)を使用していたので。

この方法でテキストファイルを追記は可能なのでしょうか?
もしくは、教えていただいた方法で、追記が可能なものはあるのでしょうか?

初歩的なことかとは思うのですが、教えてください。
よろしくお願いします。
以下で、なんとか追記でUnicodeテキストの作成ができました…。

--------------------------------------------------------------
Dim Fso As Object
Dim FsoTS As TextStream
Set Fso = CreateObject("Scripting.FileSystemObject")
Set FsoTS = Fso.OpenTextFile("test.txt", ForAppending, True, TristateTrue)
FsoTS.Write ("文字列")
FsoTS.Close
-------------------------------------------------------------

DOBON.NET | プログラミング道 | プログラミング掲示板