Допустим, у вас есть c:\example.csv
файл с содержанием:
0,5.324,text
4,true,other text,4.6E2
"45",,
Как видите, я поместил в него несколько видов значений (integers
, doubles
, strings
, booleans
, ...).
Теперь предположим, что вы хотите поместить содержимое файла в таблицу Excel
(например, начиная с ячейки C2
).
Следующий код поможет:
Sub ReadCsv()
'-----Variables:
Dim FileName As String: FileName = "c:\example.csv" '<-- file path
Dim FSO As New FileSystemObject '<-- file system object
Dim Reader As TextStream '<-- stream
'-----
Dim LineTemp As String '<-- temporary string
Dim LineData() As String '<-- line array
'-----
Dim SH As Worksheet: Set SH = ThisWorkbook.Sheets("X1") '<-- your sheet
Dim RW As Long, CL As Long: RW = 2: CL = 3 '<-- row and column of first cell to write
'-----Procedure:
Set Reader = FSO.OpenTextFile(FileName) '<-- open file
Do While Not Reader.AtEndOfStream '<-- read to the end
LineTemp = Reader.ReadLine '<-- record the line
LineData = Split(LineTemp, ",") '<-- split the data
For x = LBound(LineData) To UBound(LineData) '<-- get the data
SH.Cells(RW, CL).FormulaR1C1 = LineData(x) '<-- write the data
CL = CL + 1
Next x
CL = 3: RW = RW + 1
Loop
Reader.Close '<-- close file
End Sub
Результат следующий:

Не забудьте добавить библиотеку Microsoft Scripting Runtime
к вашим ссылкам. Вы можете сделать это в Tools
> References
.
Этот метод я использую для предотвращения любых конфликтов между файлами Microsoft Excel
и .csv
. Это всегда работает ...