我正在尝试使用vba读取文本文件。我尝试了下面的代码
Open "C:\tester.txt" For Input As #1
Worksheets("UI").Range("H12").Value = Input$(LOF(1), 1)
Close #1
当我运行这个时,我收到了一个错误。
运行时错误'62'。输入文件的结尾。
文本文件的内容是:
无法打开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
您可以将整个文件读取到变量数组中,然后将其转储为单个数据,而不是逐个单元循环。射击
将路径从C:\temp\test.txt
更改为suit。
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
对于那些不喜欢VBA必须组成显式变量然后浪费时间将数据传输给他们的人来说,稍微修改了一下。做好这份工作
Function LoadFileStr$(FN$)
With CreateObject("Scripting.FileSystemObject")
LoadFileStr = .OpenTextFile(FN, 1).readall
End With
End Function
逐行阅读:
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
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
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
我认为更简单的替代方法是Data
> From Text
,您可以指定在属性中刷新数据的频率。