• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:UnicodeでないファイルをUnicode保存)

UnicodeでないファイルをUnicode保存

このQ&Aのポイント
  • ExcelVBAで非Unicode形式のファイルを読み、Unicodeで別ファイルに書き出す方法とは?
  • ExcelVBAでワードパッドなどを制御し、自動的にファイルを開いてUnicodeで保存する方法を教えてください。
  • VBAを使用してファイルの文字コードを調べる方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

こちらが楽をさせてもらえそうです。 『VBAで、テキストファイルの文字コードを自動判定します。』 http://scripting.cocolog-nifty.com/blog/2007/02/vba_937b.html 文字コードの変換は、ADODB.Stream とかでも。 http://okwave.jp/qa/q7557074.html (fS の宣言を忘れてました。。Object にてお願い) なお、レジストリの、HKEY_CLASSES_ROOT\MIME\Database\Charset を覗いてみると・・ http://www.atmarkit.co.jp/fdotnet/dotnettips/013enumenc/enumenc.html

meglin888
質問者

お礼

回答ありがとうございます。一番上のURLを参考にプログラムを走らせてみましたが、私を困らせているファイルはutf-8であることが判明しました。 その次のURLですが、出力のサンプルですね。その前に入力で困っているのでちょっと・・・と思いましたが、ADODB.Streamというのをキーワードにこちらのページのコードを参考にしたところ、ちゃんときれいに読めました。感激です。ADODB.Streamというのは初めて使いました。 http://d.hatena.ne.jp/niemands/20090316/1237225383 ところで悲しいことに最後のURLに書いてあることがよくわかりません。エンコードのプログラムなのでしょうか。

その他の回答 (2)

  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.3

>そのファイルの文字コードが何であるか だけ。 ファイルの先頭3バイトが、8145BFなら、UTF-8 ファイルの先頭2バイトが、FFFEなら、Unicode とメモ帳では見分けているはずです。 もちろん必ずそうなっているとは限りませんが、そうなっていないとメモ帳で開くと文字化けするはず。 なお、FSOでこの先頭の文字を取得できたかどうかは不明。 ⇒試してみてもらえばいいかと。 open "FILENAME" for input as #1 input #1,A ?hex(asc(mid(A,1,1))) とすると 8145 ?hex(asc(mid(A,2,1))) とすると BF ?hex(asc(mid(A,3,1))) 以後はファイル中の文字列のコードが順に でてきます。 み終わったらcloseしておいてください。

meglin888
質問者

お礼

回答ありがとうございます。明日職場で試してみます。

meglin888
質問者

補足

さっそく読めないファイルで試してみました。おっしゃる通りに動きましたよ!皆様のおかげで問題は解決しました。本当にありがとうございます。

noname#259269
noname#259269
回答No.1

FSO で ASCII モードで読み込んで、Unicode モードで書き出すだけです。 http://officetanaka.net/excel/vba/filesystemobject/filesystemobject25.htm http://officetanaka.net/excel/vba/filesystemobject/filesystemobject06.htm 文字コードを調べるのは結構骨で、以下のような感じです。(但し .NET のサンプル) http://dobon.net/vb/dotnet/string/detectcode.html

meglin888
質問者

お礼

回答ありがとうございます。 教えていただいたサイトを参考に、 Set TextFile = FSO.OpenTextFile("C:\Work\Sample.txt",,0) と書いてみましたが、やはり文字化けしています。ためしに0を-1や2にしてみましたが、同じでした。 文字コードを調べるのって結構大変なのですね。VB.NETの環境が今はないので、コードを参考にVBAで書き直してみます。

関連するQ&A

専門家に質問してみよう