Импорт с разделителями работает лучше, если вы переименуете свой .CSV в .TXT программно перед его импортом:
Private Sub CSVimportV2()
Dim wb As Workbook
Dim tmpFilename As String
Dim myPath As String
myPath = Application.DefaultFilePath & "\example.csv"
' delete .txt without questioning
tmpFilename = Left(myPath, InStrRev(myPath, ".")) & "txt"
If Dir(tmpFilename) <> "" Then Kill tmpFilename
' copy .csv as additional .txt
FileCopy myPath, tmpFilename
' open .txt as new workbook
Set wb = Workbooks.Open( _
Filename:=tmpFilename, _
UpdateLinks:=0, _
ReadOnly:=True, _
format:=4, _
Password:="", _
WriteResPassword:="", _
IgnoreReadOnlyRecommended:=False, _
Origin:=xlWindows, _
Delimiter:=";", _
Editable:=True, _
Notify:=True, _
Converter:=2, _
AddToMru:=False, _
Local:=True, _
CorruptLoad:=xlNormalLoad)
' delete .txt
If Dir(tmpFilename) <> "" Then Kill tmpFilename
' save it als xlsx
wb.Sheets(1).UsedRange.EntireColumn.AutoFit
wb.SaveAs Left(myPath, InStrRev(myPath, ".")) & "xlsx", xlOpenXMLWorkbook
End Sub
Если ваш десятичный разделитель не распознается правильно, пожалуйста, измените Local
(может быть True
или False
)