Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Makro startet nicht / Andere Module und Subs gelöscht

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS
  
Mobil ans Ziel: PARAVAN gibt Gas mit SOLIDWORKS Simulation
Autor Thema:  Makro startet nicht / Andere Module und Subs gelöscht (4687 mal gelesen)
red5000
Mitglied



Sehen Sie sich das Profil von red5000 an!   Senden Sie eine Private Message an red5000  Schreiben Sie einen Gästebucheintrag für red5000

Beiträge: 47
Registriert: 23.08.2011

Solidworks 2012 x64
Windows 7
Xeon W3565
Quadro 4000
RAM 12 GB

erstellt am: 29. Jan. 2013 15:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

ich habe ein Makro geschrieben (danke dafür an das Forum), das bestimmte (vorher definierte) benutzerd. und konfig. Eigenschaften löscht.
Es funktioniert... aber nur wenn man im VBA Editor auf ausführen klickt. Dh. in SW lässt es sich nicht starten (über extras/makros/ausführen oder direkt mit shortcuts).
Ich habe schon gelesen, dass SW immer mit dem zuletzt eingefügten Prozedur das Makro anfängt.
Ich habe aber mittlerweile alle Module, Subs und UserForms gelöscht. Habe also nur noch ein Modul1 und darin eine Sub main().
Makro funktioniert immernoch nur per ausführen im VBA editor und nicht über SW... Was mache ich falsch?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



Sehen Sie sich das Profil von bk.sc an!   Senden Sie eine Private Message an bk.sc  Schreiben Sie einen Gästebucheintrag für bk.sc

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 29. Jan. 2013 16:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für red5000 10 Unities + Antwort hilfreich

Hallo Red,

kannst du vielleicht das Macro mal hochladen oder posten? Sonst lässt sich schwer beurteilen ob der Fehler bei dir oder vielleicht im Macro liegt.

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



Sehen Sie sich das Profil von StefanBerlitz an!   Senden Sie eine Private Message an StefanBerlitz  Schreiben Sie einen Gästebucheintrag für StefanBerlitz

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 30. Jan. 2013 07:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für red5000 10 Unities + Antwort hilfreich

Hallo red,

hört sich interessant an; wenn wirklich nur noch eine Sub main darin ist steht ja nicht mehr viel zur Auswahl 

Normalerweise steht der Cursor direkt in der Startprozedur, wenn du das im Editor aufmachst. Daher die Frage: wenn du das Makro im Editor öffnest, wo steht dann der Cursor genau? Noch einfacher wäre es aber, wenn du, wie Bernd schon geschrieben hat, das Makro hochladen könntest, dann können wir das mal gegenchecken.

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

red5000
Mitglied



Sehen Sie sich das Profil von red5000 an!   Senden Sie eine Private Message an red5000  Schreiben Sie einen Gästebucheintrag für red5000

Beiträge: 47
Registriert: 23.08.2011

Solidworks 2012 x64
Windows 7
Xeon W3565
Quadro 4000
RAM 12 GB

erstellt am: 30. Jan. 2013 15:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke für die Antworten Bernd und Stefan
hätte gern die swp-Datei angehängt aber ist nicht erlaubt, also hier der code:

Code:
Option Explicit

Dim swApp As Object
Dim part As Object
Dim infocount As Long
Dim infonames As Variant
Dim x As Integer
Dim z As Integer
Dim y As Integer
Dim confnames As Variant
Dim retval As Boolean
Dim confcount As Long
Dim deletedcountb As Long
Dim deletedcountk As Long
Dim deletedb As String
Dim deletedk As String
Dim msg As String
Public Const infodelcount As Long = 10      'Anzahl der Eigenschaften (Muss hier eingestellt werden)
Public infodel(1 To infodelcount, 1 To 2) As String

Sub main()

    Set swApp = Application.SldWorks
    Set part = swApp.ActiveDoc

'################################################################################################'
'# Der String "infodel" hat je 2 Einträge (zweite Zahl)                                         #'
'# "1" als die zweite Zahl definiert den Namen der Eigenschaft (Groß- Kleinschreibung beachten) #'
'# "2" als die zweite Zahl definiert den Typ der Eigenschaft:                                   #'
'#      "B" = Benutzerdefinierte Eigenschaft                                                    #'
'#      "K" = Konfigurationsspezifische Eigenschaft                                             #'
'# Außerdem muss die Anzahl aller Eigenschaften in "infodelcount" definiert werden              #'
'################################################################################################'

infodel(1, 1) = "Prüfdatum"
infodel(1, 2) = "B"
infodel(2, 1) = "Prüfer"
infodel(2, 2) = "B"
infodel(3, 1) = "Watermark"
infodel(3, 2) = "B"
infodel(4, 1) = "Bestell_Nummer"
infodel(4, 2) = "B"
infodel(5, 1) = "Bemerkung"
infodel(5, 2) = "B"
infodel(6, 1) = "Prüfdatum"
infodel(6, 2) = "K"
infodel(7, 1) = "Prüfer"
infodel(7, 2) = "K"
infodel(8, 1) = "Watermark"
infodel(8, 2) = "K"
infodel(9, 1) = "Bestellbezeichnung"
infodel(9, 2) = "K"
infodel(10, 1) = "Material"
infodel(10, 2) = "K"

'### Benutzerdefinierte Eigenschaften ###'

    If Not part Is Nothing Then
        infocount = part.GetCustomInfoCount2("")            ' Anzahl der benutzerdef. Eigenschaften im aktiven Teil
        infonames = part.GetCustomInfoNames2("")            ' Namen der benutzerdef. Eigenschaften im aktiven Teil
        deletedcountb = 0                                   ' Zähler für gelöschte benutz. Eigenschaften
        deletedb = ""                                       ' Speicherstring für Namen der benutz. Eigenschaften
       
        For x = 0 To infocount - 1                          ' Schleife durch benutzerdefinierte Eigenschaften im Teil
            For z = 1 To infodelcount                       ' Schleife durch alle zu löschenden Eigenschaften
                If infodel(z, 2) = "B" Then                 ' Abfrage ob es sich um eine benutzerdef. Eig. handelt
                    If infodel(z, 1) = infonames(x) Then    ' Falls die Eigenschaft in der Liste steht
                        retval = part.DeleteCustomInfo2("", infonames(x))   ' Löschen der Eigenschaft
                            If retval = True Then           'Falls gelöscht wurde
                                deletedb = deletedb + infonames(x) + Chr(13)  ' Speichern der Namen der gelöschten Eigenschaften
                                deletedcountb = deletedcountb + 1   ' Erfolgszähler + 1
                            End If
                    End If
                End If
            Next z
        Next x
             
'### Konfigurationsspezifische Eigenschaften ###'
         
        confcount = part.GetConfigurationCount()            ' Anzahl der Konfigurationen speichern
        confnames = part.GetConfigurationNames()            ' Namen der Konfigurationen speichern
        deletedcountk = 0                                   ' Zähler für gelöschte benutz. Eigenschaften
        deletedk = ""                                       ' Speicherstring für Namen der benutz. Eigenschaften
       
        For y = 0 To confcount - 1                                  ' Schleife durch alle Konfigurationen
            infocount = part.GetCustomInfoCount2(confnames(y))      ' Anzahl konfig. Eigenschaften in der aktiven Konfiguration
            infonames = part.GetCustomInfoNames2(confnames(y))      ' Alle Namen der Konf. Eigenschaften in ein Variant einlesen
            deletedk = deletedk + "[Konfiguration " & confnames(y) & "]:" & Chr(13)
       
            For x = 0 To infocount - 1                          ' Schleife durch alle konf. Eigenschaften
                For z = 1 To infodelcount                       ' Schleife durch alle zu löschenden Eigenschaften
                    If infodel(z, 2) = "K" Then                 ' Abfrage ob es sich um eine konfigurat. Eig. handelt
                        If infodel(z, 1) = infonames(x) Then    ' Falls die Eigenschaft in der Liste steht
                            retval = part.DeleteCustomInfo2(confnames(y), infonames(x))   ' Löschen der Eigenschaft
                                If retval = True Then           ' Falls gelöscht wurde
                                    deletedk = deletedk + infonames(x) + Chr(13)  'Speichern der Namen der gelöschten Eigenschaften
                                    deletedcountk = deletedcountk + 1   ' Erfolgszähler + 1
                                End If
                        End If
                    End If
                Next z
            Next x
        Next y
       
'### Bericht ###'

        'msg = deletedcountb & " benutzerdefinierte Eigenschaften gelöscht:" & Chr(13) _
        + deletedb & Chr(13) & Chr(13) _
        & deletedcountk & " konfigurationsspezifische Eigenschaften gelöscht:" & Chr(13) _
        + deletedk

        'Dim f As New UserForm1
        'f.TextBox1.MultiLine = True
        'f.TextBox1.Text = msg
       
        MsgBox deletedcountb & " benutzerdefinierte Eigenschaften gelöscht:" & Chr(13) _
        + deletedb & Chr(13) & Chr(13) _
        & deletedcountk & " konfigurationsspezifische Eigenschaften gelöscht:" & Chr(13) _
        + deletedk

    End If

    Set part = Nothing
    Set swApp = Nothing

End Sub


Die Datei hat nur 2 Unterordner also SolidWorks Objekte (ThisLibrary) und Module (Modul1).
Wie du also schon sagtest nicht viel Auswahl für einen Fehlgriff..

Edit: Achja hat keine Priorität aber hab auch ein Problem mit dem Bericht am Ende.
Der ist nämlich je nach Model zu lang bis viel zu lang 
Hab dort einpaar erfolglose Versuche auskommentiert um ein Scrollbar in der Meldung zu haben.
Falls ihr also Ideen/Lösungen habt nur zu.
Das mit der Userform hat nicht funktioniert (Es blieb einfach leer) das könnte aber etwas mit meinem Problem Nr.1 zu tun haben.

[Diese Nachricht wurde von red5000 am 30. Jan. 2013 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



Sehen Sie sich das Profil von bk.sc an!   Senden Sie eine Private Message an bk.sc  Schreiben Sie einen Gästebucheintrag für bk.sc

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 30. Jan. 2013 17:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für red5000 10 Unities + Antwort hilfreich


makgeht.avi.txt


vervba.PNG

 
Hallo red,

habe gerade ganz plump den Code in ein neues Makro kopiert und es läuft problemlos egal wie ich es ausführe, daher liegt das Problem evtl. an verwendeten bzw. nicht verwendeten Verweisen im Makro. (Video .txt entfernen)

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



Entwicklungsingenieur Konstruktion (m/w/d)
Menschen und Technologien zu verbinden, den Perfect Match für unsere Kunden zu gestalten, immer die richtigen Expert:innen für die jeweilige Herausforderung zu finden - das ist unser Anspruch bei FERCHAU und dafür suchen wir Sie: als ambitionierte:n Konstrukteur:in, der:die wie wir Technologien auf die nächste Stufe bringen möchte. Wir realisieren spannende Projekte für namhafte Kunden des Maschinenbaus und übernehmen Verantwortung für komplexe Entwicklungsprojekte....
Anzeige ansehenTeamleitung, Gruppenleitung
red5000
Mitglied



Sehen Sie sich das Profil von red5000 an!   Senden Sie eine Private Message an red5000  Schreiben Sie einen Gästebucheintrag für red5000

Beiträge: 47
Registriert: 23.08.2011

Solidworks 2012 x64
Windows 7
Xeon W3565
Quadro 4000
RAM 12 GB

erstellt am: 31. Jan. 2013 10:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke Bernd, habs wie du gemacht.. Einfach neues Makro und den Code darein kopiert. Blöd, dass ich nicht vorher drauf kam.
Da war tatsächlich ein Verweis mehr als bei dir auf dem Screenshot. Irgendwas mit Windows Forms. Jetzt wo ichs in ein neues Makro kopiert habe ist dieser Verweis nicht mehr da (ließ sich vorher nicht abwählen).

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz