Я запрашиваю текстовый файл с разделителями каналов с помощью VBA с ADODB. Я пробовал использовать как ACE, так и JET-движки, но результаты те же, и не правильные. Я сохранил файл «schema.ini» в каталоге, сообщающем движку, что файл имеет ограничиваемый канал. Однако, когда запрос завершается, у меня есть данные, которые сдвинули столбцы и другие поля, которые пусты, когда я могу видеть данные в текстовом файле. Я использую метод CopyFromRecordset
для передачи результатов в свою книгу. Может ли кто-нибудь увидеть что-то в моем коде? Или кто-нибудь сталкивается с этим?Файл с разделителями труб запроса, не возвращающий все записи
Моя строка соединения:
With Conn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.ConnectionString = "Data Source=" & strPath & ";" & _
"Extended Properties=""text;HDR=YES;FMT=Delimited"""
.Open
End With
Значение "strPath":
strPath = "H:\Folder\"
SQL Строка:
strSQL = "SELECT * FROM " & strFile & ";"
Передача данных:
With ThisWorkbook
With .Sheets("CashFlows")
.Range("a2").CopyFromRecordset Rst
With .Range("a1")
For i = 0 To Rst.Fields.Count - 1
.Offset(0, i) = Rst.Fields(i).Name
Next i
End With
End With
End With
У меня никогда не было проблем с ADO (или Ace или Jet), и я использую их довольно часто. Тем не менее, я не использовал их для файлов с разделителями каналов.
Оставьте комментарий, если я неясен в своем объяснении, или если вам требуется больше кода.
EDIT См. Две строки из текстового файла, расположенного ниже. Первая строка анализирует обычно. Второй кадр «651111100» и «654444475». Самое странное, что эти синтаксические разборки полностью прекрасны, когда я открываю их непосредственно в Excel и использую текст для столбцов.
08/31/2015|000|000|Recital #5546|0000000012|88885463|123334563
08/31/2015|000|000|DII #7412|651111100|654444475|00000326541
Я повторно проверил, и проблема заключается только в том, что он отбрасывает столбцы, а не то, что он их перемещает. Извините за любую путаницу.
UPDATE
Я сделал поиска/замены в текстовом файле и поместить в "^" вместо "|". Затем я попытался запустить это снова, и я столкнулся с той же проблемой!
Именно поэтому я правильно понимаю: проблема в том, что столбцы начинают смещаться так, как если бы в текстовом файле были дополнительные разделители (которые вы не видите)? Если это так, то проблема, вероятно, не в вашем коде, а в разделителе и потенциальном текстовом определителе (если есть). Код, который вы предоставляете, кажется мне прекрасным и сравнивается с тем, который я использую в течение многих веков: https://coastalcoder.wordpress.com/2012/10/26/importing-selected-data-from-csv-file-into-excel -using-vba-ado/ – Ralph
Ваше понимание моей проблемы верное. Запрос также отбрасывает значения в столбцах для определенных записей, которые существуют в текстовом файле, и не отбрасывает их для других. Позвольте мне взглянуть на текстовые квалификаторы и посмотреть, помогает ли это вообще. Я ценю ответ. – Kyle
Можете ли вы рассказать о том, что может быть «потенциальным текстовым определителем внутри»? Это что-то я могу диагностировать и исправить? – Kyle