Sadly, Excel's handling of CSV's has always been rather poor.
The generally accepted solution is to create the CSV file yourself using VBA code. That way you can format things exactly how you want to and you can stop the rather daft thing that Excel does which is to make the quotes around fields optional and sometimes get it wrong. There are a number of reasonable examples of CSV file creation on the Internet and several addins that provide equivalent tools.
Here is some simple code to get you started:
' 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
You will need to add a test for dates into that and format accordingly.