以下VBA今天上午工作,但现在我收到错误
输入文件的结尾
我从服务器输出中读取了一个文件。搜索状态并将其写入输出文件。
Set objFSO = CreateObject("Scripting.FileSystemObject")
'How to read a file
'Open Input File
strFile = "C:\Users\vhaisplowryb\Desktop\TestFile.txt"
Set objFile1 = objFSO.OpenTextFile(strFile)
'Open Output File
outFile2 = "C:\Users\vhaisplowryb\Desktop\Processed Form Status.txt"
Set objFile2 = objFSO.CreateTextFile(outFile2,True)
Do Until objFile1.AtEndOfStream
strLine = objFile1.ReadLine
If InStr(strline, "FormatedConvertedBase64Value(Synced)") Then
Found = 1
Do Until Found = 2
strLine = objFile1.ReadLine
If InStr(strline, "<NS1:submissionId xmlns:") Then
objFile2.Write("*****************************************************************************************************")& vbCrLf
objFile2.Write strLine & vbCrLf
Found = 2
'Wscript.Echo strLine
'Get form Status
Found = 1
Do Until Found = 2
strLine = objFile1.ReadLine
If InStr(strline, "Processed") Then
objFile2.Write strLine & vbCrLf
objFile2.Write("*****************************************************************************************************")& vbCrLf
Found = 2
ElseIf InStr(strline, "<NS1:status>") Then
objFile2.Write strLine & vbCrLf
'objFile2.Write("*****************************************************************************************************") & vbCrLf
'Found = 2
ElseIf InStr(strline, "<NS1:code>") Then
objFile2.Write strLine & vbCrLf
'objFile2.Write("*****************************************************************************************************") & vbCrLf
'Found = 2
ElseIf InStr(strline, "<NS1:value>") Then
objFile2.Write strLine & vbCrLf
objFile2.Write("*****************************************************************************************************")& vbCrLf
Found = 2
End If
Loop
End If
Loop
End If
Loop
objFile1.Close
objFile2.Close
答案 0 :(得分:1)
你的代码有3个互相嵌套的循环,你在每个循环中读取输入文件,但只有最外面的循环检查文件结束的时间。
走出困境(因为你选择不透露哪个语句实际上是在引发错误)我怀疑输入文件的内容不是你的代码隐含的假设。因此,第17行或第27行中的objFile1.ReadLine
试图在文件结束之后继续读取,因为没有条件匹配。
从
更改嵌套循环的条件Do Until Found = 2
到
Do Until Found = 2 Or objFile1.AtEndOfStream
问题就会消失。