Hallo Harry,
Zitat:
Original erstellt von harryf99:
Seit der Version 2016 wird immer das neueste Solid Works ZUSÄTZLICH gestartet auch wenn das Makro in SW 2015 ausgeführt wird.
Dieses Verhalten hat vermutlich zwei Ursachen:
In eurem Makro wird mit CreateObject("SldWorks.Application") versucht das SolidWorks-Applikations-Objekt zu bekommen. Wenn ihr mit mehreren Versionen arbeitet und Windows 7 oder höher benutzt wird es in einer "normalen" Umgebung nur dann die richtige Version aufmachen, wenn ihr die vorher als Administrator gestartet habt.
Eine etwas ausführlichere Erklärung dafür zitier ich aus diesem Beitrag, da geht es zwar um PAC4SWX, hat aber dieselbe Ursache.
Zitat:
Original erstellt von StefanBerlitz:
Kurzlösung: starte die Version die du nutzen willst, einmal als Administrator Lange Erlärung: SolidWorks trägt sich in die Registry in den allgemeinen Key HKEY_CLASSES_ROOT\SldWorks.Application ein, daneben gibt es noch die versionsspezifischen Schlüssel jeweils mit einer Nummer dahinter, z.B. HKEY_CLASSES_ROOT\SldWorks.Application.19 für die SW2011 (siehe Bild). PAC4SWX (und alle anderen Tools und Makro, die mit CreateObject oder GetObject sich an den Prozess anklinken wollen) fragt einfach nur dieses Object namens SldWorks.Applikation ab und bekommt von Windows dann eine entsprechende Antwort.
In diesem Schlüssel verborgen ist eine sogenannte CLSID, die wiederum auf einen Schlüssel verweist, in dem dann der Pfad zu der entsprechende Exe ist. So weit, so gut
Damit man mit unterschiedlichen Versionen auf der Maschine arbeiten kann, hatte SolidWorks sich einen netten Trick ausgedacht: jedesmal, wenn du SolidWorks startest, trägt sich diese Version in den Key für Sldworks.Application ein, dadurch haben externe Tools dann immer die zuletzt genutzte (aktuelle) Version gefunden. Prima Sache, funktionierte seit Jahren.
Nun kommt der Haken: dieser Registrykey ist in Windows 7 schreibgeschützt und nur ein Administrator kann den umschreiben. Da in der Regel unter Windows 7 aber unter einem Hauptnutzer/Nicht-Administrator gearbeitet wird kann SolidWorks das beim Starten nicht umschreiben und es wird immer die Version gestartet, die von einem Administrator als letzte gestartet/installiert wurde.
Nun möchte ich nicht empfehlen deswegen gleich unter einem Adminaccount zu arbeiten; wenn dich das wirklich nervt und du öfter auch für PAC4SWX zwischen verschiedenen Versionen von SolidWorks wechseln muss ist es das Einfachste, wenn du dir für diesen Schlüssel speziell die Schreibrechte auch für normale Benutzer setzt, dann ist wieder alles so wie gehabt.
Oder eben vorher einmal die gewünschte Version als Admin starten.
Ich hoffe, dass steigert die Verwirrung aber löst das Problem
Die Alternative dazu bei Makros ist es, statt
Set SwApp = CreateObject("SldWorks.Application")
Set SwApp = Application.SldWorks
zu nutzen, das sollte immer das Objekt der laufende Sitzung bekommen, egal welche Version gerade läuft.
Der Vollständigkeit halber: falls du ganz gezielt eine bestimmte Version nutzen willst kannst du dem CreateObjekt auch eine Versionsnummer mitgeben, z.B. startet
Set SwApp = CreateObject("SldWorks.Application.24")
dann immer die SolidWorks 2016. PAC4SWX nutzt diese Variante mittlerweile auch, da es doch seit der Einführung von Windows 7 und den nicht allzu weit verbreiteten Erklärungen dazu bei Installationen mehrerer Versionen zu einer Menge Verwirrungen kommt.
Ciao,
Stefan
------------------
Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP