使用 VBA 读取 TXT 文件突然不起作用了
Reading a TXT File with VBA suddenly doesn't work anymore
我正在将一些旧宏从 Word 2003 转换为 Word 2013。我以为我只需要构建一个花哨的功能区栏就可以了,但显然不是。
下面的代码应该读取 TXT 文件的全部内容并将其放入剪贴板。
这就是我创建对象并调用我的函数的方式:
Dim MyData As DataObject
Set MyData = New DataObject
MyData.SetText LoadTextFile("C:\TESTDOCS\readthisfile.txt")
MyData.PutInClipboard
这是实际的功能:
Public Function LoadTextFile(sFile As String) As String
Dim iFile As Integer
On Local Error Resume Next
iFile = FreeFile
Open sFile For Input As #iFile
LoadTextFile = Input$(LOF(iFile), iFile)
Close #iFile
End Function
之后我收到以下错误:
Run-time error '-2147024809 (80070057)':
DataObject:SetText Invalid Argument.
正如我所说:这段代码在 Word 2003 中使用相同的文件工作得很好。
根据您的错误,我建议您一次一行地读取文本文件,循环直到 EOF(文件结尾)。这会给你更多的灵活性。以下是您需要如何修改 LoadTextFile
方法以使其正确,
Public Function LoadTextFile(sFile As String) As String
On Error GoTo errHandler
Dim iFile As Integer, strIn As String, tmpStr As String
Open sFile For Input As #iFile
Do While Not EOF(iFile)
Line Input #iFile, tmpStr
strIn = strIn & tmpStr
Loop
LoadTextFile = strIn
exitHandler:
Close #iFile
Exit Function
errHandler:
MsgBox "Error (" & Err.Number & ") - " & Err.Description & vbCrLf & vbCrLf & "Exiting LoadTextFile Method.", vbInformation
Resume exitHandler
End Function
我正在将一些旧宏从 Word 2003 转换为 Word 2013。我以为我只需要构建一个花哨的功能区栏就可以了,但显然不是。
下面的代码应该读取 TXT 文件的全部内容并将其放入剪贴板。 这就是我创建对象并调用我的函数的方式:
Dim MyData As DataObject
Set MyData = New DataObject
MyData.SetText LoadTextFile("C:\TESTDOCS\readthisfile.txt")
MyData.PutInClipboard
这是实际的功能:
Public Function LoadTextFile(sFile As String) As String
Dim iFile As Integer
On Local Error Resume Next
iFile = FreeFile
Open sFile For Input As #iFile
LoadTextFile = Input$(LOF(iFile), iFile)
Close #iFile
End Function
之后我收到以下错误:
Run-time error '-2147024809 (80070057)':
DataObject:SetText Invalid Argument.
正如我所说:这段代码在 Word 2003 中使用相同的文件工作得很好。
根据您的错误,我建议您一次一行地读取文本文件,循环直到 EOF(文件结尾)。这会给你更多的灵活性。以下是您需要如何修改 LoadTextFile
方法以使其正确,
Public Function LoadTextFile(sFile As String) As String
On Error GoTo errHandler
Dim iFile As Integer, strIn As String, tmpStr As String
Open sFile For Input As #iFile
Do While Not EOF(iFile)
Line Input #iFile, tmpStr
strIn = strIn & tmpStr
Loop
LoadTextFile = strIn
exitHandler:
Close #iFile
Exit Function
errHandler:
MsgBox "Error (" & Err.Number & ") - " & Err.Description & vbCrLf & vbCrLf & "Exiting LoadTextFile Method.", vbInformation
Resume exitHandler
End Function