| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| E-Book: Best Practises von Herstellern aus der Wohndesign- und Lifestylebranche |
Autor
|
Thema: Problem mit Makro mit 2015 und 2017 (1447 mal gelesen)
|
Joshua63 Mitglied Maschinenbautechniker
Beiträge: 371 Registriert: 08.11.2006 W10 SP1 Intel i7 8700K Quatro P4000 32GB RAM SW 2021 SP4.1 SWX PDM Professional 2021
|
erstellt am: 14. Jul. 2017 10:14 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen.......... ich habe ein Problem mir unserem Makro. Folgendes Szenario: Bisher lief es auch mit mehreren Versionen auf einem Rechner problemlos, jetzt nicht mehr. Auf 2 Rechnern ist 2015 und 2017 installiert. Hat der user Adminrechte geht das Makro mit beiden Versionen. Hat er sie nicht, geht es nur mit einer Version. User 1: Führt er das makro in 2017 aus kommt die MsgBox-Meldung "Keine Datei geöffnet" und er öffnet ein SWX 2015. User 2: Ich hatte mich als Admin angemeldet und das Makro in 2017 ausgeführt um zu sehen ob es funktioniert. Jetzt kann dieser User das Makro in 2017 ausführen, aber nicht mehr in 2015. Es kommt die gleiche Fehlermeldung. Kann mir jamand sagen was da los ist ? Hier der Codschnipsel am Anfang des Makros. > Option Explicit > Const swDocPART = 1 > Const swDocASSEMBLY = 2 > Const swDocDRAWING = 3 > ___________________________________________ > ' Hier werden die Dateinamen anhand ihres Formats dem Kunden zugeordnet. > ' Trifft kein Kriteriun zu, wird das Auswahlmenü "Kundenauswahl" aufgerufen. > ' Dort kann dann entschieden werden, ob man das Makro beenden will oder einen Kunden manuell auswählen möchte. > > Sub main() > Dim swApp As Object > Dim Model As Object > Dim iPos As Integer ' Variable für 1. > Dim vPos As Integer ' Variable für 2. Punkt Kunde1 > Dim uPos1 As Integer ' Variable für 1. Unterstrich Kunde2 > Dim uPos2 As Integer ' Variable für 2. Unterstrich Kunde2 > Dim uPos3 As Integer ' Variable für 3. Unterstrich Kunde2 > Dim uPos4 As Integer ' Variable für 4. Unterstrich Kunde2 > Dim wPos1 As Integer ' Variable für 1. Bindestrich Kunde3 > Dim wPos2 As Integer ' Variable für 2. Bindestrich Kunde3 > Dim kPos As Integer ' Variable für Kaufteile > Dim instr As Integer > Dim fso As New FileSystemObject ' Variablen für die Kaufteilerfassung > Dim oFolder As Folder > > > ' am Anfang Werte auf "0" setzen iPos = 0 > iPos = 0 > vPos = 0 > uPos1 = 0 > uPos2 = 0 > uPos3 = 0 > uPos4 = 0 > wPos1 = 0 > wPos2 = 0 > kPos = 0 > > ' An das aktive Solidworks-Modell anklinken > ' ACHTUNG: falls kein Solidworks läuft, wird durch das CreateObject > ' eins geladen, was aber normalerweise nicht zu sehen ist, also > ' machen wir es doch im Zweifelsfall lieber sichtbar (sonst hängt zum > ' Schluß noch eins im Arbeitsspeicher rum und bereitet nur Scherereien) > > Set swApp = CreateObject("SldWorks.Application") > swApp.Visible = True > Set Model = swApp.ActiveDoc > > ' wenn nix geladen direkt wieder raus > If Model Is Nothing Then > Call MsgBox("Keine Datei" & vbNewLine & " geöffnet", vbOKOnly + vbInformation + vbApplicationModal, "INFORMATION") > End > End If LG
------------------ Viele Wege führen zum Ziel .......... und ich will alle wissen ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Eman1 Mitglied Maschinenbau Ingenieur
Beiträge: 33 Registriert: 22.02.2007 SW 2016 SP4, WIN 7 X64, NVIDIA K2000D, INVENTOR 2010, PAC4SW, TOTAL COMMANDER 8.51
|
erstellt am: 14. Jul. 2017 10:27 <-- editieren / zitieren --> Unities abgeben: Nur für Joshua63
Hallo Joshua, Ersetze Set swApp = CreateObject("SldWorks.Application") mit Set swApp = Application.SldWorks. Vielleicht hilft das. Wenn mehrere Installation vorhanden sind dann muss man die version im class string mit angeben. SW 2014 CreateObject("SldWorks.Application.22") SW 2014 CreateObject("SldWorks.Application.23") Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Joshua63 Mitglied Maschinenbautechniker
Beiträge: 371 Registriert: 08.11.2006 W10 SP1 Intel i7 8700K Quatro P4000 32GB RAM SW 2021 SP4.1 SWX PDM Professional 2021
|
erstellt am: 14. Jul. 2017 15:46 <-- editieren / zitieren --> Unities abgeben:
Hi Eman1, habe ich auch schon versucht, kein erfolg. >Ersetze Set swApp = CreateObject("SldWorks.Application") mit Set swApp = Application.SldWorks. >Vielleicht hilft das. Da es bei mir klappt, und bei den beiden Usern nicht (mit Kreuzverhalten) macht mich etwas stutzig. Scheint vielleicht etwas mit den Rechten zu sein........ Bisher gab es bei keinem Versionswechsel von SWX dieses Problem. Grüßle ------------------ Viele Wege führen zum Ziel .......... und ich will alle wissen ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3189 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 14. Jul. 2017 16:37 <-- editieren / zitieren --> Unities abgeben: Nur für Joshua63
Hallo, wir hatten das Problem schon immer, wenn mehrere Versionen installiert sind und die Benutzer keinen vollen Zugriff auf den Registryzweig haben. irgendwo schreibt SWX rein, welche Version zuletzt gestartet wurde (mit Adminrechten), und die startet das Makro dann auch. Dein Benutzer darf den Wert nicht verändern --> es wird die andere Version gestartet - und da drin ist keine Datei geöffnet. probier mal die Versionen direkt mitzugeben. Dann fehlt nur noch auszuwerten, welche Version der Benutzer laufen hat - ich glaub da gab es schon mal etwas hier ... Gruß, Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)
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: 17. Jul. 2017 08:18 <-- editieren / zitieren --> Unities abgeben: Nur für Joshua63
Hallo zusammen, ich bin da bei Eman1, das hört sich sehr nach einem Durcheinander der Versionen an, und das hängt mit einem Registrykey namens HKEY_CLASSES_ROOT\SldWorks.Application zusammen. Eine etwas ausführlichere Erklärung haben ich im Thread Makros starten zusätzlich SolidWorks versucht. Das mit dem Umschreiben der Zeile sollte eigentlich funktionieren. Vielleicht ist die Änderung nicht durchgegangen. Du hast vermutlich das Makro auf einem zentralen Laufwerk liegen? Dann kann es durchaus sein, dass es jemand offen hatte, als du deine Änderungen durchgeführt und "gespeichert" hast, da kommt leider keine Warnmeldung, dass das Speichern nicht geklappt hat, wenn das jemand anders offen hat. Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Joshua63 Mitglied Maschinenbautechniker
Beiträge: 371 Registriert: 08.11.2006 W10 SP1 Intel i7 8700K Quatro P4000 32GB RAM SW 2021 SP4.1 SWX PDM Professional 2021
|
erstellt am: 19. Jul. 2017 10:30 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich habe jetzt das Makro kopiert und geändert. Ich hatte die Zeile in allen Formularen ein paar mal drin stehen >Set swApp = CreateObject("SldWorks.Application")< und habe alle durch >Set swApp = Application.SldWorks< ersetzt. ........ leider ohne Erfolg. langsam verzweifle ich LG ------------------ Viele Wege führen zum Ziel .......... und ich will alle wissen ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |