プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になっております。

標題の件なのですが、Excelで"2011/04/28"と入っている項目を
VBSでCSVに変換して出力すると、"4/28/2011"と出力されます。

objExcel.ActiveWorkbook.SaveAs ファイル名, xlCSV, true

とすると、コントロールパネルの地域と言語のオプションにある短い形式で出力されるという記事を見つけたのですが、"4/28/2011"と出力されてしまいます。

解決方法をご教授願います。よろしくお願い致します。

A 回答 (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
    • good
    • 5

ご参考。


http://www.gizcollabo.jp/vbtomo/boards/vbqanda.p …

なお、この処理をすると「システム全体が変わったまんま」になるので、変えた後に元に戻さないと「変えてあるのを想定してないアプリケーションが誤動作」します。

変更前に、直前の設定値を保存しておいて、CSV出力が終わったら、元に戻しましょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています