VB代码退出工作

时间:2018-06-11 17:14:10

标签: vbscript

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

1 个答案:

答案 0 :(得分:1)

你的代码有3个互相嵌套的循环,你在每个循环中读取输入文件,但只有最外面的循环检查文件结束的时间。

走出困境(因为你选择不透露哪个语句实际上是在引发错误)我怀疑输入文件的内容不是你的代码隐含的假设。因此,第17行或第27行中的objFile1.ReadLine试图在文件结束之后继续读取,因为没有条件匹配。

更改嵌套循环的条件
Do Until Found = 2

Do Until Found = 2 Or objFile1.AtEndOfStream

问题就会消失。