DXF/PDF-Aufnahme per Makro

Hallo

Ich versuche gerade, den Code eines Makros zu nehmen, das ich gefunden habe (http://www.lynkoa.com/forum/documents-commerciaux/ma-macro-pdf-dxf-quoi-en-dire). Es lief auf SW2013 (ich bin auf SW2015). Ich gebe an, dass ich nichts über VBA weiß, also versuche ich, mein Wissen in andere Sprachen zu übertragen, um die Probleme zu lösen.

Ich habe zuerst die Fehlermeldung Projekt oder Bibliothek nicht gefunden. Ich habe den Code aus der Originaldatei kopiert und wieder in ein neues Makro eingefügt, und es scheint, dass das Problem dadurch gelöst wurde.

Jetzt scheint es, dass mein Makro nicht mehr so läuft, wie es sollte (naja, es läuft, aber nicht so, wie ich es gerne hätte). Ich führe es aus und es sagt mir, dass es keine Dateien in DXF speichern konnte.

Die Wege, die ich in Betracht ziehe:

-Makro erkennt nicht, dass SW2015 geöffnet ist

-Das Makro findet das MEP derzeit nicht geöffnet (aber normalerweise sollte es mir einen Fehler anzeigen)

 

PS: Ich habe versucht, ein kleines Stück Code hinzuzufügen, um zu überprüfen, ob der Zielordner vorhanden ist. Allerdings startete es auch nicht, ich habe es in die Kommentare geschrieben und den ursprünglichen Code genommen.

Vielen Dank im Voraus für Ihre Hilfe und ich fange an, VBA selbst zu lernen.

 

 


Makro1.swp

Hallo

Gibt es eine Fehlermeldung?

Ist es möglich, den Code in einer Textdatei zu sehen? (Noch kein SolidWorks zur Hand).

Hallo

Hey@PL ich habe das Makro schnell im txt-Format kopiert;)

Ich weiß zu wenig  darüber und es ist das ultrakomplexe Gebiet, das ich ein wenig verloren habe @_ @


macro.txt
1 „Gefällt mir“

Vielen Dank you@Centor

@nuemishra: Sie haben diese Zeile hinzugefügt:

  "Die folgenden Zeilen scheinen nicht zu funktionieren, ich habe den Basiscode wieder oben eingefügt. Der Code, der überprüft wird, muss aus dem Hauptfehler stammen

 

 

Ja, ich war derjenige, der diese Zeile hinzugefügt hat. Aber ich weiß, warum es nicht funktioniert: Ich hatte vergessen, Dim fs As Scripting.FileSystemObject hinzuzufügen und auf die Microsoft-Skriptlaufzeit zu verweisen. Ich muss noch meine Adresse korrigieren (die derzeit Pfad\nom_fichier.slddraw und nicht nur Pfad\ wiederherstellt), ich habe die Lösung, es ist nicht perfekt, aber es funktioniert. Ich werde das verbessern, wenn es validiert ist.

 

Das Hauptproblem (dasjenige, das mich zu diesem Beitrag veranlasst hat) besteht darin, dass ich das Programm im Schritt-für-Schritt-Modus des Debuggens ausführen kann, aber nicht durch Ausführen des Makros. Im Debug-Modus scheint alles zu funktionieren (außer vielleicht das Speichern des DXF, es stürzt das Debuggen ab, aber es erstellt die Dateien gut).

In Bezug auf den Debugabsturz im DXF-Datensatz wird das Debuggen gefräst und dann gestoppt, wenn ich die Ebene von Dir = swModel.SaveAs4(CompleteDocName, 0, 0, 0, 0 ) erreiche. Nach der Überprüfung scheint es, dass die drei Blätter meines Test-MEP gespeichert werden (es scheint, dass die Funktion die drei Blätter auf einmal speichert). Wenn ich neu starte, werde ich gefragt, ob ich die vorhandene Datei überschreiben möchte (und ich werde für jede Seite gefragt)

Ich kehrte zu meinem korrigierten Makro in .txt zurück

EDIT: Update der macro1.txt

 


macro1.txt

Ich wäre versucht zu sagen, dass SolidWorks nicht die Zeit hat, seine DWG zu erstellen, wenn es gebeten wird, eine weitere zu erstellen. Wir sollten versuchen, Pausen in den Code einzubauen:

Zwei Beispiele für eine Pause:

1)

Application.Wait Time + TimeSerial(0, 0, 5)' Pause von 5 Sekunden

2)

Deklarieren Sie die Sub-Sleep-Bibliothek "kernel32" aka "Sleep" (ByVal dwMilliseconds As Long)

 

Schlaf 2000 ' 2 Sekunden Pause

Verdammt, ich muss schon wieder zu schade sein.

Ich bekomme zwei verschiedene Fehler und kann sie anscheinend nicht lösen.

Für die erste pause-Methode wird mir Folgendes angezeigt: "Laufzeitfehler '438': Eigenschaft oder Methode wird von diesem Objekt nicht behandelt"

Für die zweite Methode heißt es: "Kompilierungsfehler: Der in diesem Projekt enthaltene Code muss aktualisiert werden, um auf 64-Bit-Systemen verwendet werden zu können. Überprüfen und aktualisieren Sie die Declare-Anweisungen, und markieren Sie sie dann mit einem PtrSafe-Attribut."

Für die erste Methode habe ich zuerst versucht, direkt im Haupt-Sub zu testen (direkt unter AffectVar01), für die zweite habe ich das Declare unter Public RepUtil platziert (ich habe auch versucht, es aus Verzweiflung in das Haupt-Sub zu setzen... Wer weiß, vielleicht habe ich nichts von VBA verstanden)

 

REDIGIEREN:

Ich habe ein Pflaster gefunden. Ein Sub, das ich bei der Suche bei Google gefunden habe und in einer Schleife wartet. Leider löst dies das Problem nicht. Wenn ich normal laufe, sagt es mir immer wieder, dass es keine DXF speichert (übrigens speichert es auch keine PDFs, aber wie Sie sagten, muss es daran liegen, dass das Makro für das System zu schnell wird). 

ENDLICH!! Ich bin zurückgekommen, weil ein Kollege mir vorgeschlagen hat, das Makro mit großen Pausen laufen zu lassen und es hat endlich funktioniert!  Nach ein paar Tests funktionierte es mit 100 in jedem Tempo, ich schaffte es, es einmal mit 20 im ersten und 5 im zweiten Tempo zum Laufen zu bringen. Ich werde die Tests fortsetzen, um die minimale Wartezeit zu sehen.

Ein großes Dankeschön an Sie!

 

EDIT²: Nun, ich habe ein bisschen schnell gesprochen. Wenn ich es über den Makro-Editor ausführe, funktioniert es, wenn ich Tools=>Macro=>Run ausführe, funktioniert es nicht mehr. Da ich dies mit Smart Properties verknüpfen muss, ist es möglicherweise kein Problem, ich werde sehen, ob es über Smart Properties funktioniert (auf jeden Fall geht Tools=>Macro=>Run nicht durch das Makro, da ich sofort die Meldung bekomme, dass nichts gespeichert ist und das, trotz der 3 mal 20 Sekunden Tempo)

 

Auch wenn SW sich weigert, das Makro von Hand starten zu lassen, funktioniert es problemlos über Smart Properties.


macro1.txt
1 „Gefällt mir“

Wenn ich es richtig verstanden habe, funktioniert das Makro so, wie Sie es wollten, mit Smart Properties und Schritt für Schritt, aber nicht, indem Sie es über das Makromenü starten?

Das stimmt. Wenn ich es über das Ausführungsmenü in Extras = > Makro starte, funktioniert es nicht. Aber da ich nicht vorhabe, es so zu verwenden, ist es keine große Sache. 

1 „Gefällt mir“