Hallo
Die Zeilen:
Sub main()
Dim ts As Date
Dim tshour1 As Date
Dim tshour2 As Date
ts = Now
tshour1 = DateAdd("s", 20, ts)
Wechseln Sie zum Anfang des Codes.
Dann die Zeilen:
tshour2 = Now
Do While True
If Len(Dir("ton fichier pdf avec chemin")) <> 0 Then
Exit Do
End If
tshour2 = Now
If DateDiff("s", tshour2, tshour1) <= 0 Then
Exit Sub
End If
Loop
Gehen Sie direkt nach der Zeile, in der Sie Ihre Datei speichern.
Nun, es ist durchaus möglich, dass dies nicht funktioniert, es bedeutet, dass Ihr Code in die Warteschleife gerät oder fehlerhaft ist, bevor er zu diesen Zeilen gelangt. Was passiert und welches Feedback erhalten Sie im Debug-Modus, wenn das Problem auftritt?
Dies bringt uns zurück zu der anfänglichen Bemerkung von remrem, der ich voll und ganz zustimme: Sie müssen sich mit den Fehlern in Ihrem Code auseinandersetzen. Da die Methode "SaveAs2 (IModelDoc2)" veraltet ist, wäre es besser, auf die Methode "SaveAs (IModelDocExtension)" umzusteigen (siehe hier), die es Ihnen ermöglicht, eine bestimmte Anzahl von Fehlern durch die Rückgaben von "swFileSaveError_e Enumeration" und "swFileSaveWarning_e Enumeration" zu behandeln (siehe hier und hier). Seien Sie vorsichtig, die Art und Weise zum Speichern in PDF ist anders und muss über "ExportPdfData" gehen (siehe Beispiel hier).
Um mit Fehlern in VBA umzugehen, können Sie auch hier sehen.
Zu Ihrer Information, die Makros auf dieser Website sind in der Regel Codeschnipsel, in denen das Fehlermanagement nie durchgeführt wird, es liegt am Anforderer, sein Makro zu vervollständigen und zuverlässig zu machen, sonst kann es schnell zu einer spezifischen Entwicklung von Spezifikationen werden, dann wird es zu einer Arbeit...
Herzliche Grüße