Anti-FAQ: Jak zrobić Shell synchroniczny?
Sposób podał Mr. Christie w grupie dyskusyjnej pl.comp.bazy-danych.msaccess. Poniżej cytuję autorski tekst w całości:

Witam :) przyklad byl juz na grupie ale jestem swiezo po walce w ktorej musialem troche inaczej to rozwiazac. ale do rzeczy: jezeli kogos to zainteresuje (i moze bedzie mial jakies uwagi), zamieszczam niewielki kawalem kodu (Jedna deklaracja api, 6 linijek kodu.) dzieki ktoremu mozna wywolac shella synchronicznie. Idea jest prosta: wywolujemy funkcje, wywolujemy w niej shella, shell (jesli operacja sie powiedzie) zwraca numer procesu w systemie. sprawdzamy czy proces o danym numerze nadal istnieje, gdy przestaje istniec konczymy funkcje.
'********
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _
        ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

Function kpfSyncShell(sFileName)
On Error Resume Next
Dim lRet As Long
    lRet = Shell(sFileName, 0)
    Do While OpenProcess(1, 0, lRet) <> 0
        DoEvents
    Loop
End Function
'********
pozdro :)) -- Christie/_Xtian_ (-: _