Чтение всего текстового файла с помощью vba

Я пытаюсь прочитать текстовый файл с помощью vba. Я попробовал приведенный ниже код

Open "C:\tester.txt" For Input As #1
Worksheets("UI").Range("H12").Value = Input$(LOF(1), 1)
Close #1

Когда я запускаю это, я получаю сообщение об ошибке.

Ошибка времени выполнения '62'. Введите конец файла.

Содержимое текстового файла:

Невозможно открыть COM10. Убедитесь, что он подключен
  Плюс другой материал
  И многое другое   путь больше вещей

Заранее благодарим за помощь.

Ответ 1

Следующий код будет проходить через каждую строку текстового документа и печатать их с диапазоном H12 и ниже в пользовательском листе.

Sub ImportFromText()
    Open "C:\tester.txt" For Input As #1
    r = 0
    Do Until EOF(1)
        Line Input #1, Data
        Worksheets("UI").Range("H12").Offset(r, 0) = Data
        r = r + 1
    Loop
    Close #1
End Sub

Ответ 2

Вместо того, чтобы циклически перебирать ячейку, вы можете прочитать весь файл в массив вариантов, а затем вывести его за один раз.

Измените путь от C:\temp\test.txt до подходящего.

Sub Qantas_Delay()
Dim objFSO As Object
Dim objTF As Object
Dim strIn 'As String
Dim X

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTF = objFSO.OpenTextFile("C:\temp\test.txt", 1)
strIn = objTF.readall
X = Split(strIn, vbNewLine)
[h12].Resize(UBound(X) + 1, 1) = Application.Transpose(X)
objTF.Close

End Sub

Ответ 3

Подробнее Немного изменен для тех, кому не нравится, что VBA должен составлять явные переменные, а затем тратить время на передачу данных. Let With. выполните работу

Function LoadFileStr$(FN$)

  With CreateObject("Scripting.FileSystemObject")

          LoadFileStr = .OpenTextFile(FN, 1).readall

        End With

End Function

Ответ 4

Ответ на brettdj, слегка скорректированный

Public Function readFileContents(ByVal fullFilename As String) As String
    Dim objFSO As Object
    Dim objTF As Object
    Dim strIn As String

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objTF = objFSO.OpenTextFile(fullFilename, 1)
    strIn = objTF.readall
    objTF.Close

    readFileContents = strIn
End Function

Ответ 5

Чтобы читать строки за строкой:

Public Sub loadFromFile(fullFilename As String)

    Dim FileNum As Integer
    Dim DataLine As String

    FileNum = FreeFile()
    Open fullFilename For Input As #FileNum

    While Not EOF(FileNum)
        Line Input #FileNum, DataLine
        Debug.Print DataLine
    Wend
End Sub

Ответ 6

Sub LoadFile() ' load entire file to string
' from Siddharth Rout
' http://stackoverflow.com/questions/20128115/
    Dim MyData As String
    Open "C:\MyFile" For Binary As #1
    MyData = Space$(LOF(1)) ' sets buffer to Length Of File
    Get #1, , MyData ' fits exactly
    Close #1
End Sub

Ответ 7

Я думаю, что более простой альтернативой является Data > From Text, и вы можете указать, как часто данные обновляются в свойствах.