Makro Solidworks Custom Properties Edition + Benutzerformular

Hallo

Ich habe ein Makro, das ursprünglich alleine perfekt funktioniert, das ich aber gerne verbessern und mit einem UserForm kombinieren möchte. Und da funktioniert es nicht richtig. Das Makro sollte auf den ausgewählten Dokumenten in einem ListBox der UserForm ausgeführt werden, aber es passiert nichts, wenn die Schaltfläche Ausführen gedrückt wird. Die Verknüpfung zwischen dem UserForm und dem Makro scheint nicht korrekt ausgeführt zu sein.

Wenn jemand eine Idee hat, was Probleme verursachen könnte, danke für Ihre Hilfe!

Zur Erläuterung der ursprünglichen Anforderung: Ändern Sie die Einheiten und benutzerdefinierten Eigenschaften von SolidWorks Teilen, Baugruppen und Zeichnungen. Möglicherweise mehrere gleichzeitig, aber möglicherweise nur eines. Daher die Idee des Benutzerformulars mit einer Liste von Komponenten zur Auswahl
Konfigurieren importierter Komponenten.swp (96 KB)

Hallo

Sie können damit beginnen, die Debug.Print-Funktionen zu verwenden, um den Inhalt Ihrer Variablen bei jedem Schritt vor und während des Tastendrucks zu überprüfen. Dies sollte das Problem schnell verdeutlichen.

4 „Gefällt mir“

Hallo

Das Problem liegt in diesen Zeilen des UserForm1-Formulars.

    ' Parcourir la collection des documents sélectionnés
    For Each selectedDocTitle In selectedDocs
        ' Trouver le modèle actif correspondant
        Set swModel = swApp.ActiveDoc
        If InStr(1, swModel.GetTitle, selectedDocTitle, vbTextCompare) > 0 Then
            ' Exécuter Macro11 sur ce modèle
            Macro11 swModel
        End If
    Next selectedDocTitle

Das Makro funktioniert nur, wenn das aktuelle Dokument aus der Liste ausgewählt ist. Sie müssen also geöffnete Dokumente durchsuchen, siehe dieses Beispiel der API: Pfade geöffneter Dokumente abrufen (VBA) - 2024 - SOLIDWORKS API Help

1 „Gefällt mir“

Hallo

In der Tat gut gesehen. Ich habe den Test auch dann gemacht, wenn die Dokumente in der Liste gut abschneiden, wenn ich ein Dokument abschnitte, das nicht das aktive ist, passiert nichts.

Wenn ich das aktive Dokument auswähle, wird das Makro gut gestartet, bis es zu diesem Punkt kommt:

' Schleife zur Überprüfung jeder Eigenschaft
Für jeden propName In propNames

mit einem Fehler ‹ 13 ›

Und tatsächlich werden in meinem Dokument die Einheiten geändert, aber das Makro stoppt und schafft es nicht, die benutzerdefinierten Eigenschaften zu verwalten. was gut funktionierte, indem das Makro alleine ohne Link zum Benutzerformular gestartet wurde :face_with_monocle:

Ich werde mich zunächst näher mit der Geschichte des aktiven Dokuments befassen

Bei Fehler 13 handelt es sich um eine Typdiskrepanz. Es muss also ein Problem in den früheren Einstellungen geben.