Für sowas benutze ich einfach das OnPaint-Ereignis des Formular.
Damit blockierst du aber die WM_PAINT Nachricht. Das ist keine gute Idee. Wenn man schon so etwas ohne Threads macht, dann wenigstens im OnActivate, per sich selbst geschickter Nachricht oder per Timer...
Ja, aber sollte doch einfach sein - siehe Post #1. Eine Alternative wäre auch noch, eine Variable z.B. ExcelLadevorgangGestartet bei OnPaint auszuwerten. Wenn false, dann auf true setzen und Excel-Datei laden; wenn true dann gar nichts machen.