[問題] エクセルVBAマクロにてテキストファイル形式(CSV、TSV)で保存すると、日付や通貨データのフォーマットが変わってしまう。
例) エクセル上では2015/10/19と表示されている → CSV/TSVでは 10/19/2015と表示される
Microsoftサポートによると、「これはすべての環境で同じ形式で保存されるための Excel の仕様」であるとのこと。つまり、どの言語の、どのOS上のエクセルであっても同じ動作になるようにデフォルトを設定しているということ。
具体的には以下のようになる。
SaveAs メソッドを使用して “yyyy/m/d” 形式の日付データをテキストファイル(txt、 csv、prn の形式)で保存すると、保存されたファイルは “m/d/yy” 型に変更されてしまいます。また、円(\)通貨記号を設定した数値データの場合は、ドル($)通貨記号 に変更されてしまいます。
明らかにアメリカを標準とする仕様であり、このままでは日本ではおかしなことになる。
[解決策] SaveAsメソッドの引数に Local:=True を追加する。
‘名前をつけてcsvファイルで新規保存するスクリプト例
ThisWorkBook.SaveAs Filename:=新規作成するCSVファイル名, FileFormat:=xlCSV, Local:=True
なおLocal引数はExcel 2002以降でサポートされている。
また、Local引数に True を指定すると、コントロール パネルに設定されている形式で保存されるとのこと。
コメント