Чтение всего текстового файла с помощью 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
, и вы можете указать, как часто данные обновляются в свойствах.