Sorry, I found the anwer to this, the error was in my function IfLowerText.

When I put a stop on this statement in the debugger, the first call to IfLowerText returns a true and the second call returns a false:

If IfLowerText(fline, "initial observation:") Or _
IfLowerText(fline, "initial observations:") Then
part = 3
obsi = ""
End If

But the "If" block "part = 3..." does not execute. Access seems to be ignoring the first term in the expression.