| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| AMB |
Autor
|
Thema: Makro/VBA: SolidWorks aus Excel steuern (694 / mal gelesen)
|
Pete85 Mitglied
Beiträge: 156 Registriert: 09.05.2016
|
erstellt am: 21. Mrz. 2022 22:55 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich versuche gerade SolidWorks aus Excel zu steuern. Das Dokument bekomme ich geöffnet. das SolidWorks Dokument zu aktivieren klappt aber nicht Die Declaration Code: Dim swComp As SldWorks.ModelDoc2 Set swComp = swApp.ActiveDoc
wird nicht akzeptiert.. Wie spreche ich das Dokument an? Vielen Dank, Gruß Pete Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
Beiträge: 1747 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 22. Mrz. 2022 06:55 <-- editieren / zitieren --> Unities abgeben: Nur für Pete85
Mit ActiveDoc bekommst Du, wie der Name sagt, dass aktive Dokument und nicht unbedingt, dass was Du möchtest. Schau einfach mal in der Online Hilfe unter ActivateDoc3 ------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
riesi Mitglied CAD-Admin
Beiträge: 1073 Registriert: 06.05.2002 SWX Premium 2020-Sp5
|
erstellt am: 23. Mrz. 2022 15:27 <-- editieren / zitieren --> Unities abgeben: Nur für Pete85
Zuerst muss die SolidWorks-Instanz geholt oder angelegt werden, bevor man überhaupt irgend etwas macht. z.B.: Code: Set swApp = GetObject(, "SldWorks.Application") ' Holt die laufende Instanz
Wenn SolidWorks nicht läuft, wird swApp zu nothing und wird eine neue Instanz benötigt. Entweder von Hand starten oder via Shell. Alternativ geht auch Code: Set swApp = New SldWorks.SldWorks
Allerdings werden in diesem Modus keine Addins geladen, weshalb ich den Aufruf direkt über den Pfad zur sldworks.exe gehe. [Diese Nachricht wurde von riesi am 23. Mrz. 2022 editiert.] 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: 24. Mrz. 2022 09:28 <-- editieren / zitieren --> Unities abgeben: Nur für Pete85
Moin, wenn du die beiden Antworten zusammenbringst, könnte die Erklärung heissen - du machst möglicherweise eine neue Instanz von SWX auf (parallel zur laufenden). - und die neue Instanz hat natürlich noch kein active Doc ... Gruß, Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
riesi Mitglied CAD-Admin
Beiträge: 1073 Registriert: 06.05.2002 SWX Premium 2020-Sp5
|
erstellt am: 24. Mrz. 2022 11:36 <-- editieren / zitieren --> Unities abgeben: Nur für Pete85
Richtig, der Anfang könnte so sein: Code:
Sub main() Dim swApp As SldWorks.SldWorks Set swApp = GetObject(, "SldWorks.Application") Dim swModel As ModelDoc2 Set swModel = swApp.ActiveDoc 'aktives Dokument If swModel Is Nothing Then 'Wenn kein Dokument offen ist, Call swApp.SendMsgToUser("Kein Dokument geöffnet!") 'Meldung Exit Sub 'und raus End If Dim ModelPathName As String ModelPathName = swModel.GetPathName 'kpl. Dateipfad incl. Dateiname und Extender ...
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
Beiträge: 1747 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 28. Mrz. 2022 12:32 <-- editieren / zitieren --> Unities abgeben: Nur für Pete85
|