dポイントプレゼントキャンペーン実施中!

はじめまして、エクセルのシートを文字コードを指定して出力したいのですが、どうやってよいかわからず困っております。
みなさんご教授いただければと思います。

■やりたいこと
複数のシートがあるxlsファイルがあり、その中で特定のシートを
UTF-16の文字コードで.txt出力したいです。


■現在理解していること

【その1】
shift-jisで出力する方法は、以下のコードで行えることがわかって
います。(以下のコードはCSV形式での出力ですが気にしないでください)

------------------------------------------
'''''''''''''''''''''''''''''''''
'指定したシートをcsv出力
'''''''''''''''''''''''''''''''''
Sub aaa_CSV出力()

Dim Sh As Worksheet
Dim strName As String

Application.ScreenUpdating = False

Application.DisplayAlerts = False


'定型はここから

Sheets("シート”).Activate 'csv出力したいシート名(=ファイル名)

strName = ActiveWorkbook.Path & "\csv\" & ActiveSheet.Name & ".csv" 'csv出力する場所
'strName = "D:\csv_out\" & ActiveSheet.Name & ".csv" 'csv出力する場所

ActiveSheet.Copy
With ActiveWorkbook
.SaveAs Filename:=strName, FileFormat:=xlCSV
.Close savechanges:=False
End With

End Sub
------------------------------------------


【その2】
以下の参照設定を有効にして、以下の機能を使用しないと
おそらく文字コードの指定は厳しいと、認識しています。

Microsoft ActiveX Data Object X.X Library


当方VBA自体は初心者で、サンプルのコードを書き換えて使っている程度です。
皆さんのお知恵を貸していただければと思います。

よろしくお願いいたします!!!

A 回答 (2件)

Excel から Text形式で保存する場合は Unicode に対応できますが


CSV形式には対応していません。

このあたりの情報は以下のHpに掲載されています。
■Excel で Unicode 文字を含むデータを CSV形式で保存すると…
→ http://kaitousearch.blog37.fc2.com/blog-entry-31 …

◆Unicode については
Wikipedia → http://ja.wikipedia.org/wiki/Unicode

◆VBAにおけるUnicodeの取り扱い
  http://codezine.jp/article/detail/1718

対応策としてはカンマを列に挿入するしかなさそうです。
その状態でText形式で保存すればCSVと同じになると思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます!!

質問の書き方がCSV出力のコードになっていまして申し訳ありません。
.txt出力(UTF-16)が出来れば問題はありません。

回答して頂いたURLを参考にして、試行錯誤してみます!!

お礼日時:2009/12/02 12:07

こんばんは。



ここの質問者さんの書いているコードを少し変えれば可能なはずです。
http://oshiete1.goo.ne.jp/qa5476986.html

ご本人は、自分のコードで納得されていないようですが、私が調べた限りでは、問題ないです。

UTF.Charset = "utf-8"
   ↓
UTF.Charset = "UTF-16"

としてあげるだけでよいはずです。

>以下の機能を使用しないと
>Microsoft ActiveX Data Object X.X Library

参照設定する事前バインディングでも、上記のコードのように、実行時バインディングでも、どちらでも良いでしょう。負担はそんなに多くはないはずですから。

CSVが、文字化けなどしていないとしたら、一旦、通常の方法でCSVに出力した後に、UTF-16 に換えてしまってよいと思います。文字化けが存在するのでしたら、出力の時に、String 型変数に行か全文を代入して、UTF-16 に変換してしまうしかありません。

ダメだったら、一度、こちらでも試してみます。

この回答への補足

回答ありがとうございます!!

私のわがままなのですが
可能であれば、エクセルVBA上で処理をまとめたいです。
質問の書き方がCSV出力のコードになっていまして申し訳ありません。
.txt出力(UTF-16)が出来れば問題はありません。

回答して頂いたURLを参考にして、ちょっと書いてみます~
以上、よろしくお願いします!!

補足日時:2009/12/02 11:57
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!