Вы используете EOF(lngCounter)
неправильно.Исходя из документации, эта функция ожидает номер файла:
Function EOF(FileNumber As Integer) As Integer
Вы вводите его со счетчиком строк, который в начале равен 0.Это может быть причиной ошибки, которую вы видите.
Попробуйте заменить EOF(lngCounter)
на EOF(FileNum)
и посмотрите, работает ли она.
Кроме того, если я не ошибаюсьвам здесь вообще не нужен этот счетчик строк lngCounter
.Чтение строки с помощью Line Input
продвинет указатель на строку, так что при следующем выполнении оператора он будет читать следующую строку.
Public Sub WriteLogFile(strMsg As String)
Const LogFileName As String = "\log\FrenteCaixa.log"
Dim FileNum As Integer, strLogMsg As String, strAddFatalError As String
FileNum = FreeFile
If Right(strMsg, 6) = "aberto" Then
Open ThisWorkbook.Path & LogFileName For Input Access Read Lock Read As #FileNum
Dim strLastLine As String
Do Until EOF(FileNum) '**--> THE ERROR IS HERE!**
Line Input #FileNum, strLastLine
If Left(strLastLine, 8) <> "<!-- EoF" Then strAddFatalError = "<!-- FATAL ERROR -->"
Loop
Close #FileNum
End If
Open ThisWorkbook.Path & LogFileName For Append As #FileNum
If strAddFatalError <> "" Then Print #FileNum, strAddFatalError
Print #FileNum, strLogMsg
Close #FileNum
End Sub
Я также сделал это Sub
, как вывы не присваиваете никакого возвращаемого значения, поэтому его использование в качестве функции могло бы несколько ввести в заблуждение.