Makro unter PAC4SWX läuft nicht (ohne Pac schon) / SolidWorks
Philwag 13. Okt. 2015, 10:33


MacroundPACEinstellungen.jpg


FehlerPAC4SWX.jpg

 
Hallo liebes Board,

ich habe anhand eines anderen Beitrags schon einen Code für ein Makro gefunden und für mich etwas angepasst (http://forum.cad.de/foren/ubb/Forum2/HTML/019349.shtml).
Wenn ich das Makro manuell in SWX 2012 starte, dann funktioniert das Ganze auch soweit. Danach habe ich nach einer Möglichkeit gesucht das makro über alle Zeichnungen in einem Ordner laufen zu lassen und bin dann auf PAC4SWX gekommen.
Leider wirft er mir dort immer eine Fehlermeldung aus, zu sehen in Anhang.
Ich habe auch mal einen Screenshot mit dem Macro und den Einstellungen im PAC4SWX angehängt.

Da ich leider nicht sonderlich bewandert bin, was Makros angeht, kann mir da wer helfen?

Danke für die Hilfe

Anbei noch das Makro als Text, eventuell steckt dort auch ein Fehler drin:

Const AllConfigs = 0


Option Explicit
Const swDocPART = 1
Const swDocASSEMBLY = 2
Const swDocDRAWING = 3

Public Enum swCustomInfoType_e
    swCustomInfoUnknown = 0
    swCustomInfoText = 30      '  VT_LPSTR
    swCustomInfoDate = 64      '  VT_FILETIME
    swCustomInfoNumber = 3    '  VT_I4
    swCustomInfoYesOrNo = 11  '  VT_BOOL
End Enum


Sub Main()

    Dim swApp As Object
    Dim ModelDoc As Object
    Dim ConfigCount As Long
    Dim ConfigNames As Variant
    Dim PropConfigs As New Collection
    Dim PropNames As New Collection
    Dim Prop As Variant
    Dim Config As Variant

    Dim PropType As Long
    Dim PropText As String
    Dim dummy
    Dim Teilenamen As String
    Dim i As Long

    Set swApp = CreateObject("SldWorks.Application")
    Set ModelDoc = swApp.ActiveDoc
    Teilenamen = swApp.ActiveDoc.GetTitle
    'Teilenamen = swApp.GetFirstDocument.GetTitle
   
    If ModelDoc Is Nothing Then
        ' Call MsgBox("Keine Datei geöffnet", vbOKOnly, "Information")
        Exit Sub
    End If
   
   
    PropNames.Add "BauteilnummerNEU"
    PropNames.Add "Beschreibung"
    PropNames.Add "Projektnummer_dyn"
 
    ConfigCount = ModelDoc.GetConfigurationCount
    ConfigNames = ModelDoc.GetConfigurationNames

     
    If AllConfigs = 0 Then
        PropConfigs.Add ""
      Else
        For i = 0 To ConfigCount - 1
            PropConfigs.Add ConfigNames(i)
        Next i
    End If
   
   
    For Each Config In PropConfigs
        For Each Prop In PropNames
            dummy = ModelDoc.DeleteCustomInfo2("", PropNames.Item(1))
            dummy = ModelDoc.DeleteCustomInfo2("", PropNames.Item(2))
            dummy = ModelDoc.DeleteCustomInfo2("", PropNames.Item(3))
           
            Debug.Print ModelDoc.AddCustomInfo3(Config, PropNames.Item(1), swCustomInfoText, Mid(Teilenamen, 1, 12))
            Debug.Print ModelDoc.AddCustomInfo3(Config, PropNames.Item(2), swCustomInfoText, Mid(Teilenamen, 14, 60))
            Debug.Print ModelDoc.AddCustomInfo3(Config, PropNames.Item(3), swCustomInfoText, Mid(Teilenamen, 1, 5))
        Next
   
    Next
   
End Sub

GDawg 13. Okt. 2015, 11:32

Der Modulname in PAC4SWX stimmt nicht mit Deinem Modulname überein. Könnte das der Fehler sein?
Siehe http://forum.cad.de/foren/ubb/uploads/Philwag/MacroundPACEinstellungen.jpg, dateiname != dateiname1.

Philwag 13. Okt. 2015, 11:37

Hallo und danke für den Hinweis.
Das hatte ich aber auch schon versucht, dateiname1 hatte ich nur auch ausprobiert, da ich einen Hinweis auf der Homepage von PAC4SWX gefunden habe, der das ausgesagt hat. Hatte leider keinen Einfluss.

GDawg 13. Okt. 2015, 13:46

Hmmmm .... vielleicht main != Main 
Da ich PAC4SWX nicht habe, ist es schwierig zu sagen wo der Fehler liegen könnte. Da das Makro sonst läuft, kann es nur noch an PAC4SW liegen oder an den Einstellungen für Dein Makro.
Eigentlich sollte der Unterschied in der Benennung sehr wohl einen Einfluss haben. Sonst müsste man das gar nicht eingeben.

Philwag 13. Okt. 2015, 13:53

Hallo und Danke,

das mit Main großschreiben war eine gute Idee, leider auch nicht von Erfolg gekrönt.

StefanBerlitz 20. Okt. 2015, 08:34


28818_macro-in-pac4swx.png


28818_macro-test.zip

 
Hallo Philwag,

wie GDawg schon geschrieben hat vermute ich auch eine falsche Einstellung in PAC4SWX für die Parameter. Nach deinem Screenshot des Makros muss bei Module als Wert dateiname eingetragen werden (so heißt dein Modul im Makro) und als Procedure (Startprozedur) die main.

Ich hab dein Makro von oben einfach rauskopiert, in ein neues Makro bei mir geschmissen und in PAC4SWX eingebunden, klappt bei mir einwandfrei. Ich hab das Testmakro und den Screenshot meiner Einstellungen angehangen; vielleicht versuchst du es mit dem Makro mal, vielleicht ist noch irgendwas anderes in dem Makro selbst komisch. Ich hab allerdings von der lokalen Platte aus gearbeitet, nicht aus einem UNC-Pfad.

Anmerkung: wenn das Makro mittels PAC4SWX ans laufen kommt bitte nicht wundern, wenn es so aussieht, als tut sich in den Dokumenten nichts  PAC4SWX speichert nicht von sich aus, dass musst du in deinem Makro noch selbst übernehmen, sonst macht es die Dateieigenschaften dran und PAC4SWX schließt das wieder ohne zu speichern ... 

Ciao,
Stefan