Ну, это может быть, если есть некоторые javascript, которые еще не готовы и требуют еще немного времени. Обходным путем для этого может быть попытка
Set ifrm = HTMLDoc.frames(0).frames(1).frames(0).document
до тех пор, пока она не заработает (и у вас будет максимальное время, например, 5 секунд, чтобы вы не застряли в бесконечном l oop).
Dim TmrStart As Single
TmrStart = Timer 'initialize timer
Set ifrm = Nothing 'absolutely necessary otherwise the old frame could stay referenced.
Do
On Error Resume Next
Set ifrm = HTMLDoc.frames(0).frames(1).frames(0).document
On Error Goto 0
Loop While TmrStart + 5 > Timer AND ifrm Is Nothing
If ifrm Is Nothing Then
Msgbox "The iframe was not found within 5 seconds. It finally failed."
End If
Таким образом, он будет пытаться найти iframe, пока он не будет найден, но не более 5 секунд. Если он найдет его раньше, он продолжит.