• ベストアンサー

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)

  • chie65535
  • ベストアンサー率43% (8519/19367)
回答No.1

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

関連するQ&A

  • (VBA)書式が変更されてしまいます

    ↓SaveAsで保存すると書式が変更されてしまいます。 ActiveWorkbook.SaveAs FileFormat:=xlCSV, _ CreateBackup:=False ActiveWorkbook.Close False ネットで↓の回避策を見つけたのですがうまくいきません。 **************************************************************** Sub CSV_Save() 'Sheet1をCSV形式で保存します。 With ActiveWorkbook.Sheets(1) 'A1:A10まで日付あるいは通貨設定のデータが入っているとします。 For Each rng In Range("A1:A10") 'テキスト文字列に変更します。 rng.Value = "'" & rng.Text Next rng End With ActiveWorkbook.SaveAs FileName:="C:\test.csv", FileFormat:=xlCSV End Sub **************************************************************** ご指導お願いします。

  • CSVで保存するとセルの書式が継続しません。

    (質問) EXCELをCSV形式で保存した時に、"0000199"という文字列(数字?)のままにしたい場合、どのようにマクロに記述をしたらよいでしょうか。 ActiveWorkbook.SaveAs FileFormat:=xlCSV (状況) EXCELのセルに"0000199"という文字列(数字?)がはいっています。 |0000199 | セルのイメージ (セルの左側に数字がよっているということは、文字列の形式でしょうか?) これを、CSV形式にして保存すると、先頭の0000がとれてしまい、次のようになってしまいます。 | 199| (セルの左側に数字がよっているということは、数字の形式でしょうか?) 以上 よろしくお願い致します。

  • WSHでExcelをCSV出力

    WSHでExcelのCSV出力について質問です。 Set objExcel=CreateObject("Excel.Application") objExce.Workbooks.Open InputFilePath,,True objExce.Worksheets(1).SaveAs OutFilePath, 6 objExce.ActiveWorkBook.Close で、ExcelをCSV出力することが出来たのですが、 範囲指定して出力する方法を簡単に実装するにはどうすればよいでしょうか? たとえば「C~Zの行の5行目から存在する全てのデータ」 といったケースです。 ※260行までデータが入っていた場合、C5:Z260の範囲です どなたかわかりやすいサンプルありましたら、よろしくお願いいたします。

  • VBSでCSV出力する方法

    VBSによりコンピュータ名やIPアドレスをテキストに出力したものを CSVに形式にて出力する方法はどうすればよいのでしょうか。

  • CSV保存マクロ 日付が逆になり困っています。

    マクロに詳しい方、お願いいたします。 エクセルのシートで2018/1/21とセルに記載したものを 下記マクロ(標準モジュールにコード記載)して、CSVで保存しています。 実行後CSVを開くと、21/1/2018になって逆になります。 調べてもわかりません。よろしくお願いします。 Sub Macro1() Application.DisplayAlerts = False main_f = ActiveWindow.Caption out_pass = ActiveWorkbook.Path & "\" Out_name = ActiveSheet.Name Sheets(Out_name).Select Sheets(Out_name).Copy ActiveWorkbook.SaveAs Filename:= _ out_pass & Out_name & ".csv", _ FileFormat:=xlCSV, CreateBackup:=False ActiveWindow.Close Application.DisplayAlerts = True End Sub

  • ExcelのマクロでCSVファイルを開くと遅いのですが

    ExcelのマクロでCSVファイルを開くと遅いのですが速く開く方法はありますか? 普通にファイル-開くに比べてかなり遅いです。 下記のVBAで記述してあります。 Workbooks.Open Filename:=fname ActiveWorkbook.SaveAs Filename:=fname, FileFormat:=xlCSV, _ CreateBackup:=False ActiveWorkbook.Close savechanges:=False

  • Excel VBAでCSV出力をすると実行時エラー

    Excelで品番ごとの数量データなどを他のシステムに取り込むためにCSV形式で出力するプログラムをVBAで作りました。 CSV出力を実行すると 「実行時エラー1004: 'ファイル名.csv'は読み取り専用です。アクセスできません。」 のエラーが出てしまいます。 このプログラムを作成したのは去年であり、Windows XPとExcel2003の環境では一度も出なかったエラーなのですが、PCの更新で新しい端末がWindows7とExcel2010となってから出るようになりました。 コードは以下の通りです ================================================================== 11桁の品番の間のハイフンや後ろに記号などを削除してTempシートのA列にデータを貼り付け(コード省略) bolTemp = Application.DisplayAlerts Application.DisplayAlerts = False Sheets("temp").Copy 'CSV出力 ActiveWorkbook.SaveAs Filename:="C:\Hinban Data.csv", FileFormat:=xlCSV, Local:=True ActiveWorkbook.Saved = True ActiveWorkbook.Close Application.DisplayAlerts = bolTemp MsgBox ("CSVデータの出力が完了しました(C:\Hinban Data.csv)") End Sub ================================================================== エラーが起きるエクセルファイルを以前の端末(廃棄前)にコピーして実行したらCSV出力ができました。 Windows7とExcel2010の環境下では何かコードの追記が必要なのでしょうか。 ネット検索などで調べましたがそれらしいヒントが見つかりません。 対処法などご存じでしたら、教えていただけるととても助かります。 よろしくお願いいたします。

  • (Excel vba)ExcelシートをCSV保存する時、通貨記号を\にする方法

    セルの書式設定で通貨(記号は¥)を設定しているセルを含むexcelのシートをCSV形式に保存しようとしています。手作業でメニューの「ファイル」-「名前を付けて保存」をクリックし、ファイル形式をCSVにして保存した場合は通貨記号¥がついた金額が入っていて問題ありません。 次のようにvbaのSaveAsメソッドを使用した場合、通貨記号$のついた金額になってしまいます。 ActiveWorkbook.SaveAs Filename:=FCsvName, FileFormat:=xlCSV vbaで通貨記号を\にする方法を教えてください。環境はExcel2000・Windows98SEです。

  • CSV形式に変換

    プログラミング(C言語)で、ファイルの内容をCSV形式に変換し、指定した出力ファイルに出力するプログラムを作成せよ。という課題がありましたが、 ファイルの内容をCSV形式に変換 がわかりません。どのようなプログラムをかいたらよいのでしょうか?

  • エクセルからCSVファイルに出力したい?

    エクセルのシートからマクロを使ってCSVファイルに出力したいです。 そこで調べたのですが、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2376607 こちらの質問で以下のようなコードが参考になりました。 Sub Macro1() Dim myBook As String myBook = ActiveWorkbook.FullName myBook = Left(myBook, Len(myBook) - 3) & "CSV" ActiveSheet.Copy ActiveWorkbook.SaveAs Filename:=myBook, FileFormat:=xlCSV ActiveWindow.Close False End Sub このコードではCSVのファイル名がエクセルシートのファイル名になってしまいます。 今回の質問ですが、CSVファイルを違う名前で保存するにはどのようにすればいいのでしょうか? (CSVファイルの名前は常にabc.csvで保存するものとします)

専門家に質問してみよう