| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| 3DEXPERIENCE Conference 2024 | München, eine Veranstaltung am 16.10.2024
|
Autor
|
Thema: Schriftfeld Makro (4717 mal gelesen)
|
Tortos Mitglied Konstrukteur
Beiträge: 86 Registriert: 20.01.2003
|
erstellt am: 14. Nov. 2003 10:06 <-- editieren / zitieren --> Unities abgeben:
Hallo Ich hab leider mit der Suchfunktion die passende Antwort auf mein Problem nicht gefunden. Ich hab 2003 SP5 und 2004 SP1 installiert. Wenn ich jetzt mein Schriftfeld in einer 2003 Zeichnung ausfüllen will, Öffnet das Makro 2004 und sagt es wäre keine Datei geöffnet. Ich kenn mich leider nicht so gut mit Makros Programmieren aus und weiß nicht was ich ändern muß. Mfg Tortos
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: 14. Nov. 2003 10:19 <-- editieren / zitieren --> Unities abgeben: Nur für Tortos
Hallo Tortos, normalerweise sollte es gehen, wenn du vorher die SoldiWorks-Version öffnest, mit der du arbeiten willst. Du sagst "Makro", das SolidWorks öffnet ... also ist es wohl kein SolidWorks Makro, oder doch? Wenn trotz vorigem Öffnen noch ein weiteres SW2004 dann aufgeht steht irgendwo im Makro hart die Nummer mit drin (da muss es ein oder mehrere Aufruf CreateObject oder GetObject geben, da kann man bei SldWorks.Application auch eine Nummer mitgeben, aber das sollte man nur tun, wenn man wirklich eine bestimmte Version haben will). Falls du das damit nicht finden kannst müßtest du das Makro mal mit anhängen, damit das hier einer suchen kann. Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de KLAMM? Was ist KLAMM? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tortos Mitglied Konstrukteur
Beiträge: 86 Registriert: 20.01.2003
|
erstellt am: 14. Nov. 2003 10:52 <-- editieren / zitieren --> Unities abgeben:
Hi Stefan Es ist ein SWX Makro und Ich starte es aus 2003, dann öffnet er 2004. es steht ein CreateObject drin. Allerdings ohne Versionsnummer und ich weiß nicht was Ich hinschreiben muß damit es mit 2003 SP5 funtioniert. Mfg Tortos 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: 14. Nov. 2003 11:22 <-- editieren / zitieren --> Unities abgeben: Nur für Tortos
|
Tortos Mitglied Konstrukteur
Beiträge: 86 Registriert: 20.01.2003
|
erstellt am: 14. Nov. 2003 11:29 <-- editieren / zitieren --> Unities abgeben:
|
Tortos Mitglied Konstrukteur
Beiträge: 86 Registriert: 20.01.2003
|
erstellt am: 14. Nov. 2003 11:36 <-- editieren / zitieren --> Unities abgeben:
|
McT Mitglied
Beiträge: 76 Registriert: 02.09.2003 XP64+CATIAV5R18 W764+SWX2012
|
erstellt am: 14. Nov. 2003 14:51 <-- editieren / zitieren --> Unities abgeben: Nur für Tortos
|
DaBa Mitglied Entwickler Medizintechnik
Beiträge: 50 Registriert: 27.10.2000 WIN XP SP1 SWX 2004 SWX 2005 Dell Precision 350 nvidia Ouadro4 900XGL 512 MB Rambus
|
erstellt am: 01. Mrz. 2007 15:27 <-- editieren / zitieren --> Unities abgeben: Nur für Tortos
Hallo Stefan, dieser Thread ist zwar alt, aber ich hab genau das Problem. Leider läßt sich das Problem bei mir nicht lösen wenn ich "CreateObject" durch "GetObject" ersetze. Mein Kollege, der mir das Makro von dir auf unsere Firma angepasst hat ist leider nicht mehr in der Firma. Deshalb die Frage: gibt es noch eine andere Lösung für das Problem, oder was mach ich Falsch? der anhang funktioniert nicht, beim Upload kam die Meldung: unerlaubter dateityp. Wie kann ich eine Swp datei Anhängen? gruß Daniel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lutz Federbusch Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau
Beiträge: 3094 Registriert: 03.12.2001 alle SW seit 97+ AutoCAD2016-2022 ERP ProAlpha + CA-Link Intel Core i7-7820K 32GB Win10x64 Quadro K5000 SpacePilot
|
erstellt am: 01. Mrz. 2007 16:15 <-- editieren / zitieren --> Unities abgeben: Nur für Tortos
Set SwApp = CreateObject("SldWorks.Application.10") 'SW2001+ 'Set SwApp = CreateObject("SldWorks.Application.13")'SW2005 'Set SwApp = CreateObject("SldWorks.Application.14") 'SW2006 Das funktioniert bei mir. ------------------ Lutz Federbusch Mein Gästebuch Der Mensch, Herr oder Sklave der Technik? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Oberli Mike Ehrenmitglied V.I.P. h.c. Dipl. Maschinen Ing. / Supporter
Beiträge: 3864 Registriert: 29.09.2004 SOLIDWORKS 2024 SP3.1 SOLIDWORKS 2023 SP5.0 SOLIDWORKS 2022 SP5.0 SOLIDWORKS 2021 SP5.1
|
erstellt am: 01. Mrz. 2007 16:17 <-- editieren / zitieren --> Unities abgeben: Nur für Tortos
|
DaBa Mitglied Entwickler Medizintechnik
Beiträge: 50 Registriert: 27.10.2000 WIN XP SP1 SWX 2004 SWX 2005 Dell Precision 350 nvidia Ouadro4 900XGL 512 MB Rambus
|
erstellt am: 02. Mrz. 2007 08:30 <-- editieren / zitieren --> Unities abgeben: Nur für Tortos
|
DaBa Mitglied Entwickler Medizintechnik
Beiträge: 50 Registriert: 27.10.2000 WIN XP SP1 SWX 2004 SWX 2005 Dell Precision 350 nvidia Ouadro4 900XGL 512 MB Rambus
|
erstellt am: 02. Mrz. 2007 08:44 <-- editieren / zitieren --> Unities abgeben: Nur für Tortos
Hallo Lutz, vielen Dank für deinen Hinweis. Leider kann ich immer noch kein VBA. Ich find zwar den Code wo ich das wahrscheinlich eingeben müßte.( ich habs auch gemacht aber es hat nicht funktioniert). Aber was ich nicht weiß, wo muß ich dem Makro sagen, dass die Anweisung: Set SwApp = CreateObject("SldWorks.Application.14") 'SW2006 Solidworks 2006 meint. Die 14 Steht bei mir im Code nicht drin. Ich denke es müßte ja dann irgendwo ein Verweis stehen, das damit SW2006 gemeint ist. Bestimmt habe ich jetzt nicht die richtigen Terminologie verwendet. Na ja,ich denke ich muß meinen lieben Exkollegen erreichen. Wir können ja jetzt kein VBA-Kurs übers Forum machen. Aber ich weiß jetzt wenigsten wo das Makro einen Mangel hat und kann da weitersuchen. Trotzdem nochmals vielen Dank für deine Hilfe. Gruß Daniel
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DaBa Mitglied Entwickler Medizintechnik
Beiträge: 50 Registriert: 27.10.2000 WIN XP SP1 SWX 2004 SWX 2005 Dell Precision 350 nvidia Ouadro4 900XGL 512 MB Rambus
|
erstellt am: 02. Mrz. 2007 09:14 <-- editieren / zitieren --> Unities abgeben: Nur für Tortos
Hurra, danke lutz ich habs rausbekommen. die 14 ist die nummer aus der registry. mit "14" klappts ja ganz einfach. nochmals tausend dank, manchmal sind halt nur kleinigkeiten die einen aufhalten. gruß daniel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christoph Weise Mitglied Technischer Produktdesigner / Konstruktion / CAD-Admin
Beiträge: 206 Registriert: 22.03.2015 Dell 3650 Intel I7 11700k 32 GB RAM Nvidia RTX A4000 16GB Win 10 22H2 64-bit SolidWorks 2022SP5 QuickPress 6.3.3 PortaX 2.27 SAP ERP 6.0
|
erstellt am: 22. Jun. 2016 07:43 <-- editieren / zitieren --> Unities abgeben: Nur für Tortos
ACHTUNG! Sie antworten auf einen Beitrag der älter als 1 Jahr ist! So 10 Jahre Später gleiches Problem Solidworks 2014 Installiert und im Zuge der Umstellung im Urlaub 2016 installiert bekommen. Welch wunder nach dem Urlaub gibs Probleme Bei den meisten Makros hab ichs in griff bekommen indem ich das Code: Set swApp = CreateObject("SldWorks.Application")
durch Code: Set swApp = Application.SldWorks
ersetzt habe. Allerdings habe ich auch ein Makro das Solidworks bei bedarf beendet und selbst neu startet. Hier funktioniert die Lösung nicht Meine Frage hierzu ist: Kann ich abfragen welche Version von SolidWorks geöffnet ist und dann anschließend die gleiche wieder öffnen? Gruß Christoph ------------------ Wer einen Fehler findet darf ihn behalten, wer zwei findet kann beide behalten, ab fünf Fehler gibs Rabatt :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Manfred Kern Mitglied Softwareentwicklung CAD/CAM-Systembetreuung
Beiträge: 86 Registriert: 25.05.2000 ** CSWP 06/2004 ** DELL Precision 7530 SW 2020 SP5 SW 2019 SP3 Visual Studio 2017 pro
|
erstellt am: 23. Jun. 2016 13:41 <-- editieren / zitieren --> Unities abgeben: Nur für Tortos
Das sollte dir weiterhelfen : Debug.Print("SOLIDWORKS Version = " & swApp.RevisionNumber) swApp.GetBuildNumbers2(BaseVersion, CurrentVersion, HotFixes) Debug.Print("SOLIDWORKS major revision number: " & BaseVersion) Debug.Print("SOLIDWORKS build number: " & CurrentVersion) Debug.Print("SOLIDWORKS hot fix numbers: " & HotFixes) dementsprechend dann die Versionsnummer eintragen Set SwApp = CreateObject("SldWorks.Application.24") 'SW2016 Gruß Manfred
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christoph Weise Mitglied Technischer Produktdesigner / Konstruktion / CAD-Admin
Beiträge: 206 Registriert: 22.03.2015 Dell 3650 Intel I7 11700k 32 GB RAM Nvidia RTX A4000 16GB Win 10 22H2 64-bit SolidWorks 2022SP5 QuickPress 6.3.3 PortaX 2.27 SAP ERP 6.0
|
erstellt am: 28. Jun. 2016 08:41 <-- editieren / zitieren --> Unities abgeben: Nur für Tortos
Guten Morgen, Danke Manfred ich werds bei nächster Gelegenheit ausprobieren. Das seltsame ist nur seit heute funktionieren an meinem Arbeitsplatz die "alten" Makro wieder an anderen Plätzen nicht. Eine bewusste Änderung gab es von mir aber nicht. Weiß jemand worauf der Befehl
Code: Set swApp = CreateObject("SldWorks.Application")
zugreift wenn keine Version angegeben ist? Oder warum er die vorhandene SolidWorks Sitzung nicht erkennt und eine neue (dann mit der neueren Version) startet? Gruß Christoph
------------------ Wer einen Fehler findet darf ihn behalten, wer zwei findet kann beide behalten, ab fünf Fehler gibs Rabatt :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2795 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 28. Jun. 2016 13:23 <-- editieren / zitieren --> Unities abgeben: Nur für Tortos
Hallo Christoph, ich glaub SWX legt irgendwo in der Regestry die Information der zuletzt beendeten Version ab auf die VBA beim CreateObject zurückgreift wenn keine Version mitgegeben wird. Zitat: Oder warum er die vorhandene SolidWorks Sitzung nicht erkennt und eine neue (dann mit der neueren Version) startet?
Hast du es auch mal mit GetObject an Stelle von CreateObject versucht? Gruß Bernd
------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete [Diese Nachricht wurde von bk.sc am 28. Jun. 2016 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christoph Weise Mitglied Technischer Produktdesigner / Konstruktion / CAD-Admin
Beiträge: 206 Registriert: 22.03.2015 Dell 3650 Intel I7 11700k 32 GB RAM Nvidia RTX A4000 16GB Win 10 22H2 64-bit SolidWorks 2022SP5 QuickPress 6.3.3 PortaX 2.27 SAP ERP 6.0
|
erstellt am: 28. Jun. 2016 14:05 <-- editieren / zitieren --> Unities abgeben: Nur für Tortos
Hallo Bernd, GetObject hab ich auch ausprobiert. In diesem Fall findet er keine laufende Sitzung (obwohl SolidWorks Makro und von SolidWorks aus gestartet) und bringt eine Fehlermeldung. Gruß Christoph
------------------ Wer einen Fehler findet darf ihn behalten, wer zwei findet kann beide behalten, ab fünf Fehler gibs Rabatt :-) 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: 29. Jun. 2016 08:58 <-- editieren / zitieren --> Unities abgeben: Nur für Tortos
Hallo Christoph, Zitat: Original erstellt von Christoph Weise: Weiß jemand worauf der Befehl
Code: Set swApp = CreateObject("SldWorks.Application")
zugreift wenn keine Version angegeben ist? Oder warum er die vorhandene SolidWorks Sitzung nicht erkennt und eine neue (dann mit der neueren Version) startet?
Das mutet zwar wie Hexenwerk an, ist aber eigentlich recht einfach. Ich versuch es mal auseinander zu puzzeln: SolidWorks trägt sich beim Installieren in die Registry ein, und zwar auf den "neutralen" Ast HKEY_CLASSES_ROOT\SldWorks.Application und auf den versionsabhängigen Ast HKEY_CLASSES_ROOT\SldWorks.Application.23, im Beispiel die SolidWorks 2015, die hat die interne Nummer 23. In diesem Ast gibt es jetzt immer einen Unterschlüssel namens CLSID und dieser hat als Standardwert eben die CLSID (ClassIdentifier) des eingetragenen Programms, beispielsweise {F16137AD-8EE8-4D2A-8CAC-DFF5D1F67522} Wenn du jetzt mit einem Tool oder Makro per GetObject (an vorhandenes Objekt anklinken) oder CreateObject (anklinken oder dieses Objekt neu erstellen) die entsprechende Klasse aufrufen/erzeugen willst schaut Windows (nicht SolidWorks, nicht VB/VBA oder die Sprache deines Tools) in der Registry nach, findet die CLSID dieser Klasse, sucht wiederum in der Registry nach der CLSID im Ast HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID und darin dann im Unterschlüssel LocalServer32 nach dem Standardeintrag, in dem dann der Pfad zum aufrufenden Objekt steht, also der Pfad zur SolidWorks Exe. Im angehängten Bild wird das vielleicht etwas deutlicher, wie das in der Registry aussieht. So funktioniert das meines Wissens nach mit dem CreateObject / GetObject. Jetzt kommt der "Trick" von SolidWorks mit dem neutralen Ast: sobald SolidWorks gestartet wird trägt die gestartete Version ihre CLSID auch im neutralen Ast ein! Eh voila, per CreateObject/GetObject wird immer die Version aufgerufen, die zuletzt gestartet wurde. Das passiert(e) z.B. auch, wenn du ein SolidWorks im Explorer doppelklickst Warum taucht aber jetzt ein Problem auf, wenn das jahrelang gut geklappt hat?
Microsoft hat in seiner unendlichen Weisheit beschlossen, dass es für mündige Anwender viel zu gefährlich ist, wenn die Programme, die sie starten auch Änderungen in der Registry machen können, die die Maschine betreffen. Sicherheit vor allem Also haben Sie beginnend mit Windows 7 den kompletten Bereich HKLM schreibgeschützt für normale Anwender und Hauptbenutzer gemacht. Wie du oben gesehen hast steht aber der neutrale Ast auch in HKLM und das umschreiben on-the-fly klappt dann nicht mehr, weil du keine Schreibrechte hast. Du musst also lokaler Admin sein, damit dieses wieder funktioniert, und selbst das reicht nicht, du musst dein SolidWorks mit der rechten Maustaste anklicken und "Als Administrator ausführen" benutzen, damit sich deine gewünschte SolidWorks Version auch wieder in der Registry im neutralen Ast eintragen kann. Unterm Strich wird also immer die Version gestartet, die als letztes von einem Administrator ausgeführt wurde. Oft passiert das nur ein einziges Mal: bei der Installation einer neuen Version. Gemein wird es jetzt wenn du mehrere Versionen auf deinem Rechner hast und eine davon deinstallierst: das machst du ja als Admin, der neutrale Ast wird dabei auch "geleert", und wenn du danach keine der verbliebenen Versionen wieder als Admin startest ... Deswegen wird auch immer empfohlen, erst die alte Version zu deinstallieren und dann die neue zu Installieren, andersrum kann es schon mal doof enden. Es gibt natürlich auch eine einfache Lösung, wenn man Zugriff auf die Registry hat: einfach den Schlüssel HKEY_CLASSES_ROOT\SldWorks.Application wieder schreibberechtigt für alle machen und der Spuk ist gegessen. Warum SolidWorks das nicht bei der Installation macht hab ich noch nie so wirklich verstanden ... Ich hoffe, ich hab dich jetzt nicht noch weiter verwirrt - ich würde bei deinen Problemmaschinen mal in diesen Schlüssel schauen, ob bzw. was da eingetragen ist und ggf. einfach die gewünschte SolidWorks einmal als Admin starten, dann sollte es wieder klappen. Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christoph Weise Mitglied Technischer Produktdesigner / Konstruktion / CAD-Admin
Beiträge: 206 Registriert: 22.03.2015 Dell 3650 Intel I7 11700k 32 GB RAM Nvidia RTX A4000 16GB Win 10 22H2 64-bit SolidWorks 2022SP5 QuickPress 6.3.3 PortaX 2.27 SAP ERP 6.0
|
erstellt am: 30. Jun. 2016 09:04 <-- editieren / zitieren --> Unities abgeben: Nur für Tortos
Guten Morgen Stefan, Danke für die super Erklärung und du lagst wie immer goldrichtig mit dem Problem. Der Registry Schlüssel ist nicht richtig gesetzt und wird auch vom normalen User nicht gesetzt. Deswegen kommt es je nach Installationsweise zu Problemen oder eben nicht. Jetzt muss sich nur noch ein Admin drum kümmern das der richtige Schlüssel eingetragen ist. Gruß Christoph ------------------ Wer einen Fehler findet darf ihn behalten, wer zwei findet kann beide behalten, ab fünf Fehler gibs Rabatt :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jörg.jwd Ehrenmitglied V.I.P. h.c. CAD-PDM Administrator
Beiträge: 3109 Registriert: 05.11.2003
|
erstellt am: 30. Jun. 2016 09:24 <-- editieren / zitieren --> Unities abgeben: Nur für Tortos
Zitat: Original erstellt von StefanBerlitz: Microsoft hat in seiner unendlichen Weisheit beschlossen, dass es für mündige Anwender viel zu gefährlich ist, wenn die Programme, die sie starten auch Änderungen in der Registry machen können, die die Maschine betreffen. Sicherheit vor allem
...davon kann ich auch ein Lied singen Unsere Netzwerker sind standhaft bei ihre Meinung dass der UAC eigentlich noch höher als Maximum sein müsste. Ergo ballern sie den Usern den UAC mit Minimum Standard oder höchste Stufe mit dem Ergebnis dass die nicht mal mehr in den Current User schreiben können. Und die Krönung von dem Ganzen wenn UAC auf Standard oder höher steht und du versuchst eine .reg Datei auszuführen die nur in den CU schreibt bekommst du von Windows die Antwort du hättest erfolgreich in die Registriy geschrieben. Wenn du dann kontrollierst wirst du feststellen dass absolut nichts geschrieben wurde. Soviel zu Windows-Sicherheit Edit mit CU meine ich natürlich Current User und nicht see you ------------------ Grüße Jörg da ich weiß daß ich nichts weiß weiß ich immer noch mehr als die die nicht wissen daß sie nichts wissen (weiß nicht von wem) [Diese Nachricht wurde von jörg.jwd am 30. Jun. 2016 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christoph Weise Mitglied Technischer Produktdesigner / Konstruktion / CAD-Admin
Beiträge: 206 Registriert: 22.03.2015 Dell 3650 Intel I7 11700k 32 GB RAM Nvidia RTX A4000 16GB Win 10 22H2 64-bit SolidWorks 2022SP5 QuickPress 6.3.3 PortaX 2.27 SAP ERP 6.0
|
erstellt am: 01. Jul. 2016 09:10 <-- editieren / zitieren --> Unities abgeben: Nur für Tortos
Hallo Jörg das mit den Registry Einträgen ist mir auch zu gut bekannt. Seltsamerweise selbst wenn die Rechte vorhanden sind trägt er nicht immer alles ein, erst nach mehrmaligen ausführender reg Datei. Und die Windows Meldung ist auch umsonst da hier keine Überprüfung stattfindet. wär vlt. was für ein kleines Makro "Reg sicher eintragen" ------------------ Wer einen Fehler findet darf ihn behalten, wer zwei findet kann beide behalten, ab fünf Fehler gibs Rabatt :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |