- ベストアンサー
UnicodeでないファイルをUnicode保存
- ExcelVBAで非Unicode形式のファイルを読み、Unicodeで別ファイルに書き出す方法とは?
- ExcelVBAでワードパッドなどを制御し、自動的にファイルを開いてUnicodeで保存する方法を教えてください。
- VBAを使用してファイルの文字コードを調べる方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こちらが楽をさせてもらえそうです。 『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
その他の回答 (2)
- Siegrune
- ベストアンサー率35% (316/895)
>そのファイルの文字コードが何であるか だけ。 ファイルの先頭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しておいてください。
お礼
回答ありがとうございます。明日職場で試してみます。
補足
さっそく読めないファイルで試してみました。おっしゃる通りに動きましたよ!皆様のおかげで問題は解決しました。本当にありがとうございます。
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
お礼
回答ありがとうございます。 教えていただいたサイトを参考に、 Set TextFile = FSO.OpenTextFile("C:\Work\Sample.txt",,0) と書いてみましたが、やはり文字化けしています。ためしに0を-1や2にしてみましたが、同じでした。 文字コードを調べるのって結構大変なのですね。VB.NETの環境が今はないので、コードを参考にVBAで書き直してみます。
お礼
回答ありがとうございます。一番上のURLを参考にプログラムを走らせてみましたが、私を困らせているファイルはutf-8であることが判明しました。 その次のURLですが、出力のサンプルですね。その前に入力で困っているのでちょっと・・・と思いましたが、ADODB.Streamというのをキーワードにこちらのページのコードを参考にしたところ、ちゃんときれいに読めました。感激です。ADODB.Streamというのは初めて使いました。 http://d.hatena.ne.jp/niemands/20090316/1237225383 ところで悲しいことに最後のURLに書いてあることがよくわかりません。エンコードのプログラムなのでしょうか。