質問: VBAでフルパスに中国語が含まれている場合、 下記1のVBAコードでcsvファイルをテキストとして開こうとすると、 エラーで開くことができませんでした。 1 Open ファイル名 For Input As #1 しかし2のようにエクセルでcsvを開くとフルパスに中国語が含まれていても 開くことはできました。 2 Workbooks.Open (ファイル名) この違いはなんなのでしょうか。 また、処理速度の都合上、どうしてもテキストとして読み込みたいのですが、 フルパス名を変えずにテキストとして開く方法はないでしょうか。
回答: ユニコード文字に対応しているか否かの問題です。 同じOpenでも属しているライブラリ・クラスが異なれば別物です。 1→標準搭載ステートメント VBA標準搭載のファイル操作系のステートメントやVBAライブラリのDir等の関数ではファイルパス名に昔ながらのJISコード対応以外の文字【例:IMEで変換するときに[環境依存]と注釈表示される文字など】が使用されると正常に取り扱うことができません。いわゆるユニコード文字。 話はズレますが、特にDir関数は誤動作の素になります。 ユニコードで表される文字が "?" に置き換わって、たとえば Dir("?.csv") という感じに置換されワイルドカード扱いになってしまうのです。 昔ながら状態のまま改められていないのです(多分これからも変わらないと思う) 2→ExcelライブラリのWorkbooksのメソッド WorkbooksはVBA標準ではなくExcelライブラリに属しているので上記動作の対象外です。 (もしかしたら標準外ライブラリでも未対応のがありそう) 以上、VBEの「オブジェクトブラウザ」で対象がどこに属しているのか確認できるようになっています。 ということで回答として ファイル操作はFileSystemObjectを利用する です。