Вы можете использовать метод, аналогичный тому, который я использую при архивировании файлов и папок с помощью вызова API для сна:
With ShellApplication
Debug.Print Timer, "Zipping started . ";
.Namespace(CVar(ZipTemp)).CopyHere CVar(Path)
' Ignore error while looking up the zipped file before is has been added.
On Error Resume Next
' Wait for the file to created.
Do Until .Namespace(CVar(ZipTemp)).Items.Count = 1
' Wait a little ...
Sleep 50
Debug.Print ".";
Loop
Debug.Print
' Resume normal error handling.
On Error GoTo 0
Debug.Print Timer, "Zipping finished."
End With
Это взято из моей статьи:
С помощью VBA архивируйте и распаковывайте файлы и папки с помощью проводника Windows
(Если у вас нет учетной записи, перейдите по ссылке: прочитайте статью полностью).
Полный код также включен GitHub : VBA.Compress
, где также имеется функция Sleep в модуле FileCompress.bas
' Suspends the execution of the current thread until the time-out interval elapses.
'
#If VBA7 Then
Private Declare PtrSafe Sub Sleep Lib "kernel32" ( _
ByVal dwMilliseconds As Long)
#Else
Private Declare Sub Sleep Lib "kernel32" ( _
ByVal dwMilliseconds As Long)
#End If