У меня есть код для вставки данных из файла CSV в рабочую таблицу. Everyhting работает хорошо, но я сталкиваюсь с некоторыми проблемами с текущим решением.
Есть ли способ вставить данные без форматирования? Теперь Excel форматирует, например, от -Name
до =-Name
, поэтому вместо значений указывается #Name?
ошибок. Также он форматирует 215067910018
в 2,15068E+11
.
Мои строки CSV выглядят так:
123456,"Word1","Word2","-Word3",,"Word4","Word5","00076",,"Word7","Word8"
После запуска кода "-Word3"
выглядит как #Name?
в ячейке Excel. Также вместо 00076
я получаю 76
Вот мой текущий код:
Sub GetCustomers()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets.Add(After:= _
ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
ws.Name = "Sheet1"
Dim strText As String
Dim file As String
file = "L:\15\186507.CSV
' read utf-8 file to strText variable
With CreateObject("ADODB.Stream")
.Open
.Type = 1 ' Private Const adTypeBinary = 1
.LoadFromFile file
.Type = 2 ' Private Const adTypeText = 2
.Charset = "utf-8"
strText = .ReadText(-1) ' Private Const adReadAll = -1
End With
' parse strText data to a sheet
intRow = 1
For Each strLine In Split(strText, Chr(10))
If strLine <> "" Then
With ws
.Cells(intRow, 1) = strLine
.Cells(intRow, 1).TextToColumns Destination:=Cells(intRow, 1), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False
End With
intRow = intRow + 1
End If
Next strLine
End Sub
РЕДАКТИРОВАТЬ:
IЯ могу сделать это во время преобразования текста в столбцы вручную. Разве это не должно быть возможно VBA? Я имею в виду установить формат данных столбца в то время как .TextToColumns