Добрый день. Нашел в интернете решение по переносу csv в массив, но не пойму, какой разделитель строк в этом файле. В массив все заносится в 1 столбец. Код ниже, файл во вложении. Какой должен быть разделитель строк в этом csv файле?
Код
Sub mass()
fldr = "C:\"
s = "testdata-1000.csv"
b = TextFile2Array(, fldr, , s)
End sub
____________________________
Function TextFile2Array(Optional ByVal Title As String = "Выберите файл для обработки", _
Optional ByVal InitialPath As String = "c:\", _
Optional ByVal FilterDescription As String = "Текстовые файлы", _
Optional ByVal FilterExtention As String = "*.*", _
Optional ByVal ColumnsSeparator$ = ";", _
Optional ByVal RowsSeparator$ = "?") As Variant 'какой должен быть разделитель строк?
On Error Resume Next
With Application.FileDialog(msoFileDialogOpen) ' диалоговое окно выбора файла CSV
.ButtonName = "Выбрать": .Title = Title: .InitialFileName = InitialPath
.Filters.Clear: .Filters.Add FilterDescription, FilterExtention
If .Show <> -1 Then Exit Function
filename$ = .SelectedItems(1)
End With
Set FSO = CreateObject("scripting.filesystemobject") ' читаем текст из выбранного файла
Set ts = FSO.OpenTextFile(filename$, 1, True): txt$ = ts.ReadAll: ts.Close
Set ts = Nothing: Set FSO = Nothing
txt = Trim(txt): Err.Clear ' разделяем текст на строки и столбцы
If txt Like "*" & RowsSeparator$ Then txt = Left(txt, Len(txt) - Len(RowsSeparator$))
tmpArr1 = Split(txt, RowsSeparator$): RowsCount = UBound(tmpArr1) + 1
ColumnsCount = UBound(Split(tmpArr1(0), ColumnsSeparator$)) + 1
If Err.Number > 0 Then MsgBox "Строка не может быть разбита на двумерный массив", vbCritical: End
ReDim arr(1 To RowsCount, 1 To ColumnsCount)
For i = LBound(tmpArr1) To UBound(tmpArr1)
tmpArr2 = Split(Trim(tmpArr1(i)), ColumnsSeparator$)
For j = 1 To UBound(tmpArr2) + 1
arr(i + 1, j) = tmpArr2(j - 1)
Next j
Next i
TextFile2Array = arr ' возвращаем результат в виде двумерного массива
End Function
sokol92, добрый день. vbNewLine уже пробовал. Не переносит строки с таким разделителем. То есть, я вижу, что в массив кидается с разделителем " ", но не перемещает на новую строку