2017-02-15 13 views
0

Я написал код vba для чтения в текстовом файле, однако нет никаких возвратов каретки или вкладок, чтобы разграничить файл, который я читаю.Custom SkipLine при чтении файла vba

Я использую MS Access и вставляю каждую строку файла в свою базу данных, которая работает, когда я вручную помещаю возврат каретки в свой текстовый файл, однако, когда данные получены, он не находится в этом требуемом формате.

Для экземпляра данных в настоящее время нравится

Record115022017ABCDRecord216022017DCBA 

Я хочу, чтобы данные были:

  • Линия 1: Record1 15022017 ABCD
  • Линия 2: Record2 16022017 DCBA

Код:

Dim file As String 

file = ("C:\data.txt") 

Open file For Input As #1 

i = 1 

While EOF(1) = False 

Line Input #1, strLine 


DATABASE INSERT STATEMENT 

**Start reading New Line of File** 

i = i + 1 


Wend 
Close #1 

Так что мне просто нужна помощь, чтобы заменить текст Начните читать новую строку файла с действующим кодом. Любая помощь очень ценится

ответ

1

Вы можете разделить линию на два с помощью Mid:

s = "Record115022017ABCDRecord216022017DCBA" 
l1 = "Line" & Str(i) & ": " & Mid(s, 1, 6) & " " & Mid(s, 7, 1) & " " & Mid(s, 8, 8) & " " & Mid(s, 16, 4) 
l2 = "Line" & Str(i + 1) & ": " & Mid(s, 20, 6) & " " & Mid(s, 26, 1) & " " & Mid(s, 27, 8) & " " & Mid(s, 35, 4) 

, которые будут выводить две линии:

Line 0: Record 1 15022017 ABCD 
Line 1: Record 2 16022017 DCBA 

Отрегулируйте петлю, чтобы я Шаг 2.

+0

Привет, Спасибо за предложение, однако я не могу использовать это решение, поскольку данные не всегда в одном формате. В файле могут быть разные типы записей, которые мне нужно учитывать. то есть 'Record115022017ABCDRecord216022017DCBARecord315022017ABCD23042016' Если третья запись содержит дополнительное значение. Также нет определенной структуры, по которой запись будет поступать за другой. Я надеялся, что есть способ открыть файл снова, начиная с определенного символа. – user3456401

+0

Существует. Прочитайте его как двоичный, а не строковый. Но это полезно только в том случае, если вы знаете, сколько байтов (символов) вы хотите прочитать. Таким образом, ваш единственный вариант - читать строки за строкой, а затем анализировать их, чтобы разделить их на несколько записей. – Gustav

+0

Привет @Gustav Мне удалось заставить его работать, используя двоичное чтение файла с помощью команды Seek. Я мог бы лучше объяснить содержимое файла, но у меня есть решение благодаря вашему предложению выше. В общем случае в файле существует несколько разных типов записей, однако каждый тип записи имеет определенную длину. Я смог использовать инструкцию IF для проверки первых двух символов (которые определяют тип записи) и новой переменной j, которую я увеличиваю на длину записи, чтобы успешно прочитать файл. Большое спасибо – user3456401