Con riferimento all'esempio precedente:
puoi dichiarare una variabile globale (Dim Caricato as Boolean) e impostarla a true nell'evento NavigateComplete2.
Nella funzione che stampa:

codice:
'Metti a false Caricato
Caricato = False
WebBrowser1.Navigate2 "c:\prova.htm"

while not caricato

     DoEvents  'serve a intercettare gli eventi scatenati
               'Quindi il ciclo prosegue fino a quando non viene
               'eseguito WebBrowser1_NavigateComplete2

wend

'All'uscita esegui la stampa
WebBrowser1.execWB ..........
Ciao