使用vba读取整个文本文件

我正在尝试使用vba读取文本文件。 我试了下面的代码

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

当我运行这个我得到一个错误。

运行时错误“62”。 input文件末尾。

文本文件的内容是:

无法打开COM10。 确保它已连接
加上其他的东西
还有更多的东西
方式更多的东西

预先感谢您的帮助。

以下代码将遍历文本文档中的每一行,并在范围H12和UI表单中向下打印。

 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 

您可以将整个文件读取到一个变体数组中,然后将其转储到一个单独的文件中,而不是逐个单元地循环。 射击

将path从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 

逐行阅读:

 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 
 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 

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 

我认为更简单的select是Data > From Text ,您可以指定在属性中刷新数据的频率。

对于那些不喜欢VBA的人来说,稍加修改就不得不组成显式variables,然后浪费时间传输数据给他们。 做这个工作

函数LoadFileStr $(FN $)

使用CreateObject(“Scripting.FileSystemObject”)

  LoadFileStr = .OpenTextFile(FN, 1).readall End With 

结束function