Macro stoppen

Hallo

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.

Bij voorbaat dank

1 like

Hallo

In feite heb je in plaats daarvan te maken met de fout in je code.

Probeer de OpenDoc7-methode te gebruiken, zoals in dit voorbeeld. Dan beheer je elke fout.

Ik heb niet getest...

3 likes

Bedankt voor je antwoord, maar het helpt me niet veel, ik ben niet goed genoeg in vb om dit alleen te doen.
 

 

Hier is onze macro ...

 


pdf-dxf.swp

Hallo

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.

Vriendelijke groeten

3 likes

Hallo

Heel erg bedankt d.roger, ik heb zojuist je code aangepast aan onze macro en het lijkt te werken,

Om te testen heb ik de naam van de doelmap gewijzigd.

de aanpassing lijkt meer op doe-het-zelf, maar hey, als het werkt...

Ik ben een aantal dagen in het echt aan het testen en ik kom terug op het forum.

Tot gauw

 

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?

Vriendelijke groeten

 

 

Hallo

De lijnen:

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...

Vriendelijke groeten

 

1 like