2013-11-21 6 views
3

Я пытаюсь прочитать текстовый файл (эти файлы создаются внешней программой, которая не может быть tweeked) с использованием следующего макроса.Ввод в конец файла VBA excel

While Not EOF(int_current_file) 
    Line Input #int_current_file, buf 
    If Left(buf, 1) <> "#" Then 
     buf1 = Split(buf, "=") 
     Print #int_master_file, CInt(Left(buf, 2)) & ";" & CInt(Mid(buf, 3, 4)) & ";" & CInt(Mid(buf, 7, 3)) & ";" & CInt(Mid(buf, 10, 1)) & ";" & CDbl(buf1(1)/100000000) & ";" & CDate(file_date) & ";" & Mid(file_name, 4, 3) 
    End If 
    'Line Input #int_current_file, buf 
    'Debug.Print Data 
Wend 

Однако во второй строке этого файла у меня есть следующие строки:

=01082013=01072013=31072013=06082013=1640=380441=21=000001249=#02IFS86.G84=IFSSS5=7ҐK!Ђi—Љ42ЃЁ4№{¤Хo$]ґ•Хp Ё1‹;±~†ЁRLЌг‰®ґн нќРР^±>_‰

Когда макрос пытается прочитать эту линию error 62 происходит Input past end of file.

Как исправить эту проблему?

ответ

11

Могу ли я заинтересовать вас лучшим способом чтения текстовых файлов в VBA?

Это будет читать весь текстовый файл в ONE GO в массиве, а затем закрыть файл. Таким образом, вам не нужно постоянно открывать файл.

Option Explicit 

Sub Sample() 
    Dim MyData As String, strData() As String 
    Dim i As Long 

    '~~> Replace your file here 
    Open "C:\MyFile.Txt" For Binary As #1 
    MyData = Space$(LOF(1)) 
    Get #1, , MyData 
    Close #1 
    strData() = Split(MyData, vbCrLf) 

    ' 
    '~~> Now strData has all the data from the text file 
    ' 

    For i = LBound(strData) To UBound(strData) 
     Debug.Print strData(i) 
     ' 
     '~~> What ever you want here 
     ' 
    Next i 
End Sub 
+0

Не могли бы вы отправлять комментарии на этот мир кода: MyData = Space $ (LOF (1)) Get # 1,, MyData? –

+1

'Space $ (LOF (1))' создает строку размером файла. [LOF] (http://msdn.microsoft.com/en-us/library/dtz29k5z%28v=vs.90%29.aspx), а 'Space $' - инициализировать строку до заданной длины. Кстати, это сработало для вас? –

+0

Привет, я был потрясен сложностью импорта простого текстового файла в VBA !. Кажется, что легче извлекать данные прямо с веб-сайта, чем просто импортировать их из текстового файла. Ваше 20-е предложение, которое я пробовал, и это тоже не работает для меня. Я просто пытаюсь использовать важные текстовые файлы в качестве строки, чтобы я мог использовать функции «Mid» и «InStr» в результирующей строке. Любые разъяснения были бы более чем приветствуются. Если я попытаюсь поместить strData в TextBox, я получаю сообщение об ошибке: «type mismatch» Я предполагаю, что это связано с массивом, а не с типом строки? Любые решения? – SJDS

Смежные вопросы