複数のExcelファイルをCSVファイルへ変換する以下コードを作成し、ボタンで実行しています。
日付のデータが元のままで問題なく変換される場合もあるのですが、Excelの元データが何かしら影響しているのか、日付のデータが元のExcelデータの表示の状態と異なって変換されてしまう場合があります。
例えば2019/10/16とExcelでは表示されている日付が、以下コードでCSVファイルへ変換すると10/16/2019と/(スラッシュも含めて)全てテキストデータで入力されてきてしまいます。
csvに変換した後、AccessDBへインポートするので(日付・時刻形式)、/がテキストデータとして入っており、また年が一番後ろにきてしまうのも、インポートエラーになり困っています。
AccessDBへインポートする際、テキスト形式でインポートしても良いのですが、その場合は20191016のような年4桁月2桁日2桁の順番での数字の羅列としたいです。
どうぞよろしくお願いいたします。
Sub ExcelファイルをCSVへ変換()
Application.ScreenUpdating = False Dim OpenFileName As Variant OpenFileName = Application.GetOpenFilename _ ("Excelファイル,*.*", MultiSelect:=True) If Not IsArray(OpenFileName) Then MsgBox "キャンセルしました。": Exit Sub End If Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") ' インスタンス化 Dim n As Long '選択したファイル数、処理を繰り返す For n = LBound(OpenFileName) To UBound(OpenFileName) Dim wb As Workbook Set wb = Workbooks.Open(OpenFileName(n)) Dim strBaseName As String strBaseName = fso.GetBaseName(wb.Name) '拡張子を除くファイル名を取得 '同じファイル名で同じ階層にCSV形式で保存する wb.SaveAs _ Filename:=wb.Path & "\" & strBaseName, FileFormat:=xlCSV wb.Close SaveChanges:=False Set wb = Nothing 'いったん解放 Next n Application.ScreenUpdating = True MsgBox "終了しました。"
End Sub
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/23 02:45
2019/10/23 02:59
2019/10/23 03:10