Nel ciclo devi mettere un DoEvents altrimenti la "message pump" di Windows non puo' lavorare ... non so se in VBA c'e' qualcosa come DoEvents ... quindi

codice:
Do
  If oApp.readyState = 4 Then
   Exit Do
  End If
  DoEvents
Loop