Hi Jeff!
Thoughts #1:(with intervention of the user)
After Shell or Appactivate, put the following:
'DoCmd.OpenForm "MyLittleForm", acNormal, , , , acDialog'.
The acDialog will wait your 'MyLittleForm' until you close
it. This will be done when you click the button 'Close'
or 'Ok' that you have build on them. Ok, for the things
work fine, will be healthy that the outside App that you
started, warns when finished.
Thoughts #2:(automatic)
You said "...The external program is creating a data file
that needs to be loaded into Access...". Ok, after Shell,
you turn on the Timer, setting it Timer interval to a
convenient number, say 10000 (miliseconds). At each 10
seconds the Timer will call a subroutine that wil test a
field value from a file that the external program will
write when finished - field that was initialized with a
value other than the final value.
After detect the final value, don't forget to set the
Timer interval to zero, to stop it.
Ok, that's the options...
Geraldo