- ベストアンサー
VBSでEXCEL⇒CSV変換で日付の書式が変わる
いつもお世話になっております。 標題の件なのですが、Excelで"2011/04/28"と入っている項目を VBSでCSVに変換して出力すると、"4/28/2011"と出力されます。 objExcel.ActiveWorkbook.SaveAs ファイル名, xlCSV, true とすると、コントロールパネルの地域と言語のオプションにある短い形式で出力されるという記事を見つけたのですが、"4/28/2011"と出力されてしまいます。 解決方法をご教授願います。よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
言語設定の「短い形式」が"yyyy/mm/dd"になっているにも関わらず、 "mm/dd/yyyy"で保存される現象が問題なのでしょうか。 だとすると、VBSに限った話ではありません。 Excelでも手動保存時は発生せず、VBAの場合に同現象が発生します。 ExcelVBAで確認してください。 Sub test1() With Workbooks.Add With .Sheets(1) .Range("A1").Value = "2011/4/28" .Range("B1").Value = "'2011/04/28" End With .SaveAs Filename:="C:\temp\test1.csv", FileFormat:=xlCSV .Close False End With End Sub Sub test2() With Workbooks.Add With .Sheets(1) .Range("A1").Value = "2011/4/28" .Range("B1").Value = "'2011/04/28" End With .SaveAs Filename:="C:\temp\test2.csv", FileFormat:=xlCSV, Local:=True .Close False End With End Sub SaveAsメソッドのヘルプを参照の事。 >Local 省略可能です。バリアント型 (Variant) の値を使用します。 >Excel の言語設定 (コントロール パネルの設定を含む) に合わせてファイルを保存するには、 >True を指定します。 >Visual Basic for Applications (VBA) の言語設定に合わせてファイルを保存するには、 >False (既定値) を指定します。 >通常この設定は、Workbooks.Open を実行する VBA プロジェクトが Excel バージョン 5 >または 95 の各国語版で作成されたプロジェクトでない限り、英語 (U.S.) になります。 という事で、 >objExcel.ActiveWorkbook.SaveAs ファイル名, xlCSV, true >とすると、コントロールパネルの地域と言語のオプションにある短い形式で出力される... VBSでの引数Localの指定の仕方が少し違います。 objExcel.ActiveWorkbook.SaveAs ファイル名, 6, , , , , , , , , , True
その他の回答 (1)
- chie65536(@chie65535)
- ベストアンサー率44% (8755/19868)
ご参考。 http://www.gizcollabo.jp/vbtomo/boards/vbqanda.php?do=spread&num=12896#12899 なお、この処理をすると「システム全体が変わったまんま」になるので、変えた後に元に戻さないと「変えてあるのを想定してないアプリケーションが誤動作」します。 変更前に、直前の設定値を保存しておいて、CSV出力が終わったら、元に戻しましょう。