Я предполагаю, что вы также хотите напечатать значение полей, а не только имена полей.
Измените свой код следующим образом
Set dbFields = rs.Fields
For i = 0 To dbFields.Count - 1
Debug.Print "Column #", i, dbFields.Item(i).Name
Next i
rs.MoveFirst
Do While Not rs.EOF
Debug.Print rs.Fields(1).Value, rs.Fields(2).Value, rs.Fields(3).Value
rs.MoveNext
Loop
В приведенной ниже части будет напечатано значение полей.
Ваша проблема в том, что вы неправильно понимаете вывод своей строки
Debug.Print "Recordset item", rs(3)
В этой строке выводится значение поля с номером 3. Лучше написать
Debug.Print "Recordset item", rs.fields(3).value
И это поле может содержать Null
UPDATE Вы можете попробовать следующий код.Вам нужно добавить ссылку на ADODB
Option Explicit
Sub user_statistic_report()
Dim sPath As String
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
With cn
.Provider = "Microsoft.Jet.OLEDB.4.0;"
.Properties("Data Source") = "C:\\Mydocs\raport\" 'sample path
.Properties("Extended properties") = "text;HDR=No;FMT=Delimited;"
.Open
End With
rs.CursorLocation = adUseClient 'someone told it helped him but it did not a trick for me
'later I'd like to select only rows with specific conditions
rs.Open "SELECT * FROM [b.txt]", cn, adOpenStatic
Debug.Print "Number of records:", rs.RecordCount
Dim wks As Worksheet
Set wks = ActiveSheet
wks.UsedRange.Clear
WriteToSheet wks, rs
rs.Close
cn.Close
Set cn = Nothing
Set rs = Nothing
End Sub
Sub WriteToSheet(ByVal sh As Worksheet, ByVal rs As ADODB.Recordset)
Dim dbfields As ADODB.Fields
Dim i As Long, j As Long
' Write Heading resp. Field names in row 1
Set dbfields = rs.Fields
For i = 0 To dbfields.Count - 1
sh.Cells(1, i + 1).Value = dbfields.Item(i).Name
Next i
' Write values of the recordset starting at row 3
j = 2
rs.MoveFirst
Do While Not rs.EOF
For i = 0 To dbfields.Count - 1
sh.Cells(j, i + 1).Value = rs.Fields.Item(i).Value
Next i
rs.MoveNext
j = j + 1
Loop
End Sub
ОБНОВЛЕНИЕ 2 Это текстовый файл
![enter image description here](https://i.stack.imgur.com/naRVc.jpg)
Это шестнадцатеричное представление
![enter image description here](https://i.stack.imgur.com/1Jff7.jpg)
И это результат в Excel, читающем файл со скриптом
![enter image description here](https://i.stack.imgur.com/gTuzY.jpg)
Итак, содержимое файла:
TAB 11 TAB TAB 13 CRLF
TAB 21 TAB 22 TAB 23 CRLF
TAB 31 TAB 32 TAB 33 CRLF
TAB 42 TAB 43 CRLF