We gebruiken een macro die op deze site te vinden is om een pdf en een dxf van een tekening op te slaan, de verbinding met onze server is vaak heel erg traag en we zijn gedwongen om solidworks te "doden" om het proces van de macro te stoppen die tevergeefs probeert verbinding te maken, is het mogelijk om een code toe te voegen die het na een tijdje zou stoppen en ons in staat zou stellen om terug te schakelen op Solidworks.
Ik ben het meestal eens met remrem, je zult te maken krijgen met de fouten in je code.
Als je nu gewoon een stukje code wilt waarmee je na een tijdje uit de macro kunt komen, moet je zoiets als dit kunnen doen (niet volledig getest):
Sub main()
Dim ts As Date
Dim tshour1 As Date
Dim tshour2 As Date
ts = Now
tshour1 = DateAdd("s", 20, ts)
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
End Sub
Met dit stukje code kunt u uit de lus komen als uw pdf-bestand bestaat of de macro na 20 seconden verlaten als uw bestand niet bestaat, uiteraard aan te passen aan uw code.
Hallo Grote teleurstelling! na het proberen met ontoegankelijke server, kom ik niet uit de macro ... Misschien heb ik de code van d.roger niet op de juiste plaats ingevoegd? Ik heb echter het deel verwijderd dat controleert op de aanwezigheid van het bestand. Heeft iemand opheldering om mij te geven?
Sub main()
Dim ts As Date
Dim tshour1 As Date
Dim tshour2 As Date
ts = Now
tshour1 = DateAdd("s", 20, ts)
Ga naar het begin van de code.
Dan de regels:
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
Ga direct na de regel waar u uw bestand opslaat.
Nu is het heel goed mogelijk dat dit niet werkt, het betekent dat uw code in de wacht staat of een fout maakt voordat deze bij deze regels komt. Wat gebeurt er en welke feedback krijg je in de debug-modus wanneer het probleem zich voordoet?
Dit brengt ons terug bij de eerste opmerking van remrem, waar ik het helemaal mee eens ben, je zult te maken krijgen met de fouten in je code. Omdat de methode "SaveAs2 (IModelDoc2)" verouderd is, zou het beter zijn om over te schakelen naar de methode "SaveAs (IModelDocExtension)" (zie hier), waarmee u een bepaald aantal fouten kunt verwerken via de "swFileSaveError_e Enumeration" en "swFileSaveWarning_e Enumeration" retouren (zie hier en hier). Wees voorzichtig, de manier om op te slaan in pdf is anders en moet via "ExportPdfData" gaan (zie voorbeeld hier).
Om met fouten in vba om te gaan, kunt u ook hier zien.
Ter informatie, de macro's op deze site zijn over het algemeen stukjes code waarin het foutbeheer nooit wordt gedaan, het is aan de aanvrager om zijn macro te voltooien en betrouwbaar te maken, anders kan het snel een specifieke ontwikkeling op specificaties worden, dan wordt het een baan...