К сожалению, в Excel обработка CSV всегда была довольно плохой.
Общепринятым решением является создание файла CSV самостоятельно с использованием кода VBA. Таким образом, вы можете отформатировать вещи точно так, как вы хотите, и вы можете остановить довольно глупую вещь, которую делает Excel, которая заключается в том, чтобы сделать кавычки вокруг полей необязательными, а иногда и ошибочными. В Интернете есть несколько разумных примеров создания CSV-файлов и несколько надстроек, которые предоставляют эквивалентные инструменты.
Вот простой код, с которого можно начать:
' Output a more consistant CSV file
Public Sub OutputQuotedCSV()
Const QSTR As String = """"
Dim myRecord As Range
Dim myField As Range
Dim vFilename As Variant
Dim nFileNum As Long
Dim sOut As String
'Get a filename to save as
vFilename = Application.GetSaveAsFilename(filefilter:="Microsoft CSV files,*.csv", _
title:="Save as CSV with fields in double quotes")
If vFilename = False Then Exit Sub 'User chose Cancel
nFileNum = FreeFile
Open vFilename For Output As #nFileNum
For Each myRecord In Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)
With myRecord
For Each myField In Range(.Cells(1), Cells(.Row, 256).End(xlToLeft))
sOut = sOut & "," & QSTR & _
Replace(myField.Text, QSTR, QSTR & QSTR) & QSTR
Next myField
Print #nFileNum, Mid(sOut, 2)
sOut = Empty
End With
Next myRecord
Close #nFileNum
End Sub
Вам нужно будет добавить тест для дат и форматировать их соответственно.