Infelizmente, o modo como o Excel trata CSVs sempre foi muito ruim.
A solução geralmente aceita é criar o arquivo CSV usando o código VBA. Dessa forma você pode formatar as coisas exatamente como você quer e você pode parar a coisa bastante tola que o Excel faz, que é tornar as cotações em torno dos campos opcionais e às vezes errar. Há vários exemplos razoáveis de criação de arquivos CSV na Internet e vários suplementos que fornecem ferramentas equivalentes.
Aqui está um código simples para você começar:
' 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
Você precisará adicionar um teste para datas e formatar adequadamente.