VB код перестал работать - PullRequest
0 голосов
/ 11 июня 2018

Следующее 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 голосов
/ 12 июня 2018

В вашем коде есть 3 цикла, вложенных друг в друга, и вы читаете из входного файла в каждом цикле, но только самый внешний цикл проверяет, когда достигнут конец файла.

Выход изконечность (поскольку вы решили не раскрывать, какое утверждение на самом деле вызывает ошибку), я подозреваю, что содержимое вашего входного файла не является тем, что подразумевается в вашем коде.Следовательно, objFile1.ReadLine в строке 17 или строке 27 пытается продолжить чтение после того, как конец файла уже достигнут, потому что ни одно из ваших условий не соответствует.

Измените условие вложенных циклов с

Do Until Found = 2

до

Do Until Found = 2 Or objFile1.AtEndOfStream

и проблема исчезнет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...