Frage zu meinem Makro

Hallo

 

Ich habe ein Makro mit dem erstellt, was ich gefunden habe, es muss mein MEP in PDF konvertieren und es im Ordner des Jahres speichern, in dem es erstellt wurde, wenn der Ordner nicht existiert, erstellen Sie es.

 

Da ist sie:

 

Dimmen swApp als Objekt

 

Teil als Objekt dimmen

Dim FileNamePDF als Zeichenfolge

 

Sub main()

Dim swApp als SldWorks.SldWorks

Dim SWmoddoc As SldWorks.ModelDoc2

Sun NumberPlan As String

Dim-PfadDatei als Zeichenfolge

Dateiname als Zeichenfolge dimmen

Dim NumberLeaf As String

Dim FileNamePDF als Zeichenfolge

Dim PathFileNamePDF als Zeichenfolge

Dim NameFolderPDF als Zeichenfolge

Dim nErrors             so lange

Dimmen           nWarnungen so lange

Legen Sie swApp = Application.SldWorks fest

Legen Sie SWmoddoc = swApp.ActiveDoc fest.

 

'Abrufen des Pfads und des Dateinamens

Beispiel: \\MERCURE\Sharing\xMethods\Public\DAO\Solidworks\2 - Drawing\2014\046-1-2014-A.SLDDRW

Pfadname = SWmoddoc.GetPfadName

FilePath = Left(Pfadname, InStrRev(Pfadname, "\")) '\\MERCURY\Sharing\xMethods\Public\DAO\Solidworks\2 - Drawing\2014\

Dateiname = Rechts(Pfadname, Len(Pfadname) - InStrRev(Pfadname, "\")) '046-1-2014-A.SLDDRW

DateinamePDF = Rechts(Dateiname, 13) '2014-A.SLDDRW

FileNamePDF = Links(FileNamePDF, 4) '2014

FileNamePathPDF = "\\MERCURY\Sharing\xMethoden\Öffentlich\DAO\PDF-Pläne\" & OrdnerNamePDF '\\MERCURY\Sharing\xMethoden\Öffentlich\DAO\PDF-Pläne\2014\

 

'------------------------------------------------------------------

"Abrufen von benutzerdefinierten Eigenschaften aus der Plandatei

 

Wenn SWmoddoc.GetType = swDocDRAWING Dann überprüfen Sie, ob wir uns in einer Plandatei befinden

    DateinamePDF = Ersetzen(Dateiname, "SLDDRW", "pdf")

Ende, wenn

 

'------------------------------------------------------------------

'Testen, ob der Ordner mit dem Jahr vorhanden ist, wenn nicht, erstellen Sie ihn

 

    Wenn Dir$(DateinamePfadPDF) = "" dann

        MkDir "DateinamePDF"

       Ende, wenn

'------------------------------------------------------------------

"Prüfen Sie, ob die Datei bereits vorhanden ist, oder bestätigen Sie

"Dann wird die Aufnahme

 

    If Dir$(FileNamePathPDF) = FileNamePDF Then 'Die Datei existiert bereits

        Wenn MsgBox("Die Datei: " & DateinamePDF & vbNewLine & " bereits existiert. Wollen Sie ihn ersetzen?", _

         vbOKCancel + vbExclamation) = vbOK Dann

            nErrors = SWmoddoc.SaveAs(DateinamePfadPDF)

        Oder

            if MsgBox("PDF-Datei wurde nicht erstellt.", vbInformation) = vbOK dann exit sub '-------Nachricht und BEENDEN-------

        Ende, wenn

    Oder

        Wenn msgBox("Datei: " & DateinamePDF & vbNewLine & " wird erstellt", vbOKCancel + vbInformation) = vbOK, dann

            nErrors = SWmoddoc.SaveAs(DateinamePfadPDF)

        Oder

            if MsgBox("PDF-Datei wurde nicht erstellt.", vbInformation) = vbOK dann exit sub '-------Nachricht und BEENDEN-------

        Ende, wenn

    Ende, wenn

    

 

 

Ende Sub

 

 

Ich weiß nicht, wie ich es testen soll, und ich würde gerne vor dem Start wissen, ob ich nicht etwas Dummes getan habe, weil es mit den Ordnern meines Unternehmensnetzwerks spielt.

 

Vielen Dank im Voraus.

Hallo

 

Um ein Makro zu testen, setzen Sie am besten einen Haltepunkt an den Anfang und drücken Sie dann F8, um Zeile für Zeile voranzukommen.

Es kann auch interessant sein, Spione auf die wichtigen Variablen zu setzen.

 

 

Siehe diesen Link: http://www.tomshardware.fr/forum/id-1348092/tutoriel-excel-macro-vba-debogage.html

1 „Gefällt mir“

Die debug.print-Anweisung ermöglicht es Ihnen, den Inhalt einer Variablen im Ausführungsfenster anzuzeigen (das Sie mit STRG G anzeigen, glaube ich).

 

Wenn ich meine Makros teste, ändere ich die Dateipfade in lokale Pfade, es ermöglicht mir, zu überprüfen, ohne das Netzwerk zu verwenden.

2 „Gefällt mir“

Ich habe den Pfad zu test geändert.

 

Also erstellt er für mich den Ordner, den es nicht gibt, auf der anderen Seite erstellt er die PDF-Datei nicht, wussten Sie, dass es abstürzen könnte, weil das Makro nicht abstürzt.

Sie müssen Ihre Bedingungen überprüfen.

 

Machen Sie einen Stopp auf der Linie

 

nErrors = SWmoddoc.SaveAs(DateinamePfadPDF)

 

Hört das Programm hier auf?

 

Wenn nicht, sind alle Bedingungen in Ordnung? Sie können dies mit Spionen oder debug.print überprüfen

1 „Gefällt mir“

Hallo an alle

 

Um ein Makro zu testen, ist es am besten, einen Haltepunkt an den Anfang zu setzen und dann F8 zu drücken, um Zeile für Zeile voranzukommen, wie Lucas P sagt. Eine andere Lösung besteht darin, die Menüleiste "Debug" zu aktivieren oder noch besser den Makro-Editor anzupassen, indem Sie die Schaltfläche "Detaillierter Schritt" (') vor der Schaltfläche "Ausführen" () in der Standardsymbolleiste platzieren, um sie nicht zu überladen. > Modus Operandi > siehe Anhang.

Andernfalls können Sie im Makro-Editor mit dem lokalen Fenster "Ansicht" die Werte aller Variablen anzeigen, während das Makro ausgeführt wird.

 

 

Schönen Tag.


personnaliser_lediteur_de_macro.png

Entschuldigung, ich verstehe nicht, was Sie von mir verlangen, auf der anderen Seite, da ich Ihnen gesagt habe, dass es den Ordner erstellt, wenn es nicht existiert, und es erstellt das PDF, aber im selben Ordner wie das SLDDRW, verstehe ich nicht.

Ich hatte mich noch nicht mit Ihrem Code befasst, ich gebe es zu!

 

Ich habe gerade gesehen, dass die folgende Zeile wahrscheinlich falsch ist:

 

        MkDir "DateinamePDF"

 

1) Es scheint mir, dass man zum Erstellen eines Verzeichnisses den vollständigen Namen mit dem Pfad angeben muss!

2) Sie benötigen keine Anführungszeichen für Ihre Variable "FileNamePDF", sonst ist es keine Variable mehr, sondern Text!

 

Eine bequeme Möglichkeit, VBA-Code zu überprüfen und zu lesen, ist die Verwendung von Notepad++ , das hier zu finden ist:

http://notepad-plus-plus.org/download/v6.6.7.html

 

Fügen Sie dann den Code in eine neue Datei ein und wählen Sie aus dem Menü Sprache > V > VB.

 

Die Farbformatierung ist viel aussagekräftiger als die im einfachen VBA-Editor.

Variablen werden in Schwarz angezeigt, während Text in Grau angezeigt wird.

2 „Gefällt mir“

Ich habe die Variable in der SWmoddoc.SaveAs(PathFileNamePDF) geändert, ich hatte die vollständige Adresse mit der Datei angegeben, es hat nicht funktioniert, ich habe einfach den Namen der PDF-Datei eingegeben und sie erstellt sie für mich im selben Ordner wie die slddrw, und etwas anderes, wenn der Ordner, in dem ich die PDF-Datei speichern möchte, bereits existiert, Dieser Fehler, kann mir jemand helfen zu verstehen, hier ist der Text meines Makros.


sans_titre.png

Hallo

 

Ich denke, der Fehler kommt von der Variablen "PathPDFfileName" in diesem Befehl:

nErrors = SWmoddoc.SaveAs(DateinamePfadPDF)

 

Wenn Sie mit dem Befehl "SaveAs" speichern, müssen Sie den vollständigen Namen der Datei als Argument eingeben, MIT der Erweiterung (in Ihrem Fall .pdf).

 

Herzliche Grüße.

 

Franck.

Ich habe das nach Lucas gesehen, ich habe es modifiziert, aber es funktioniert immer noch nicht.

Fgirard, ich habe das auch gesehen, ich habe es modifiziert, aber es funktioniert immer noch nicht ganz.

Für die Haltepunkte schauen Sie sich den Link an, den ich oben eingefügt habe:

http://www.tomshardware.fr/forum/id-1348092/tutoriel-excel-macro-vba-debogage.html

 

In diesem Artikel werden verschiedene Möglichkeiten zum Debuggen von Code erläutert, einschließlich Haltepunkten.

 

1 „Gefällt mir“

Wenn es immer noch nicht funktioniert, fügen Sie Spione hinzu, wie hier gezeigt:

http://www.tomshardware.fr/forum/id-1348092/tutoriel-excel-macro-vba-debogage.html

 

Und was sind die Werte der Variablen:

NameDateiPDF 

PfadNameDateiPDF

 

 

Wo endet Ihr Makro?

1 „Gefällt mir“

re

 

Um ein Makro zu testen, das im Formeleditor >, klicken Sie auf "Ansicht", auf "Lokales Variablenfenster" > siehe Anhang


editeur_de_macro_fenetre_variables_locales.png
2 „Gefällt mir“

Unsere Beiträge überschneiden sich, tut mir leid.

 

Es ist seltsam, dass "SaveAs" mit dem vollständigen Dateinamen (Pfad+Name+Erweiterung) nicht richtig funktioniert.

Gleiches gilt für den Fehler mit dem Ordner, der bereits existiert.

 

Versuchen Sie es mit dem Befehl "SaveAs" für ModelDocExtension. Dies ist diejenige, die ich in meinen Makros verwende.

So können Sie eine Meldung machen:

   Dim SWmodext as As SldWorks.ModelDocExtension

   Dim swExportPDFData     As SldWorks.ExportPdfData

Fehler              so lange   dimmen
Schwache Warnungen,            solange sie nicht angezeigt werden   

und wie man beeinflusst:

   Legen Sie SWmodext = SWmoddoc.Extension fest

dann:

   nErrors = SWmodext.SaveAs(DateinamePfadPDF, 0, 0, swExportPDFData, Fehler, Warnungen)

 

 

 

Für die Ordnerverwaltung verwende ich das FileSystemObject:

Dim oFSO                As Scripting.FileSystemObject   
Dim oFld                  As Ordner   

 

   Set oFSO = Neues Scripting.FileSystemObject

 

   Wenn oFSO.FolderExists(FileNamePathPDF) = false, dann
        Legen Sie oFld = oFSO.CreateFolder(DateinamePfadPDF) fest
    Ende, wenn

2 „Gefällt mir“

 Vielen Dank caronmaxime, sehr nützlich dieses Fenster!

 

Mit Ihrem Fenster haben meine Variablen also den Wert, den ich ihnen geben möchte, aber es funktioniert nicht so, wie ich es möchte.

 

Er wird die Datei 2014 für mich erstellen, auf der anderen Seite, wenn die Datei bereits existiert, hört sie bei der Mkdir-Zeile auf (1. Punkt, den ich nicht verstehe)

 

und er erstellt die PDF-Datei für mich, aber auf der anderen Seite im selben Ordner wie die aktive Datei, wenn er sie in den 2014-Ordner legen sollte (2. Punkt, den ich nicht verstehe)

 

HILFE!!

1 „Gefällt mir“

Würde der Fehler nicht davon herrühren, dass Sie einen Ordner testen und einen weiteren Ordner erstellen?

 

Wenn Dir$(DateinamePfadPDF) = "" dann
MkDir DateinamePDF

Ende, wenn

 

PathFileNamePDF oder sollte hier 2 Mal verwendet werden, oder? Einmal für den Dir$-Test und einmal für den MkDir?

3 „Gefällt mir“

re re

 

Mathieu, meiner Meinung nach sollte dein   [MkDir FileNamePDF ]  durch    [MkDir FileNamePathPDF] ersetzt werden.

 

In Ihrem Makro-Editor können Sie auf das Schlüsselwort MkDir doppelklicken, um es auszuwählen, und F1 drücken. Die Hilfe wird es Ihnen ermöglichen zu verstehen.

re re re

 

Machen Sie eine Bestandsaufnahme unter Berücksichtigung der hervorragenden Empfehlungen von Fgirard und werfen Sie vielleicht einen Blick auf die Frage "Mein PDF-DXF-Makro, was soll ich sagen? ", die ich veröffentlicht habe.

 

Ansonsten gehe ich so vor (siehe Anhang), um ein Makro zu debuggen, wenn es Ordner oder Dateien erstellt


capture_decran_sw_et_editeur_sw_et_explorer_windows.png