• ベストアンサー

VBSでEXCEL⇒CSV変換で日付の書式が変わる

いつもお世話になっております。 標題の件なのですが、Excelで"2011/04/28"と入っている項目を VBSでCSVに変換して出力すると、"4/28/2011"と出力されます。 objExcel.ActiveWorkbook.SaveAs ファイル名, xlCSV, true とすると、コントロールパネルの地域と言語のオプションにある短い形式で出力されるという記事を見つけたのですが、"4/28/2011"と出力されてしまいます。 解決方法をご教授願います。よろしくお願い致します。

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

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.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)

回答No.1

ご参考。 http://www.gizcollabo.jp/vbtomo/boards/vbqanda.php?do=spread&num=12896#12899 なお、この処理をすると「システム全体が変わったまんま」になるので、変えた後に元に戻さないと「変えてあるのを想定してないアプリケーションが誤動作」します。 変更前に、直前の設定値を保存しておいて、CSV出力が終わったら、元に戻しましょう。

関連するQ&A

専門家に質問してみよう