VBAでCSVファイルを出力した際に日付データの形式が勝手に「yyyy/m/d」から「m/d/yyyy」に変換されて困ることがありました💦
対処法はFileFormatのあとに「,Local:=True」を追記するだけで解消します。
コードで具体的に説明していきます。
NGパターン
これでCSVファイルを出力するとDateの部分が「m/d/yyyy」に変わります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Sub Sample_NG() Application.DisplayAlerts = False '新規ファイル作成 Workbooks.Add With ActiveSheet .Cells(1, 1) = "動作確認" .Cells(1, 2) = Date End With 'CSVで保存 ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & "Sample.csv", FileFormat:=xlCSV ActiveWorkbook.Close True Application.DisplayAlerts = True End Sub |
OKパターン
NGとの違いはFileFormatのあとに「,Local:=True」を付けるだけです!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Sub Sample() Application.DisplayAlerts = False '新規ファイル作成 Workbooks.Add With ActiveSheet .Cells(1, 1) = "動作確認" .Cells(1, 2) = Date End With 'CSVで保存 ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & "Sample.csv", FileFormat:=xlCSV, Local:=True ActiveWorkbook.Close True Application.DisplayAlerts = True End Sub |
これでデータを出力すると日付データが「yyyy/m/d」の状態になります。