| | |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| | |
 | What’s New SWOOD 2026: Alle Neuerungen im Überblick, ein Webinar am 16.06.2026
|
|
Autor
|
Thema: Baugruppe mit Konfiguration aus Excel heraus starten (1702 mal gelesen)
|
cax sven Mitglied CAx/PDM Manager
 
 Beiträge: 108 Registriert: 23.06.2008
|
erstellt am: 30. Jun. 2008 08:40 <-- editieren / zitieren --> Unities abgeben:         
Hallo und guten morgen zusammmen, ich wollte aus Excel heraus ein bestimmtes Bauteil in SolidWorks starten. Soweit so gut, aber möchte auch gleich noch eine bestimmte Konfiguration aktivieren. Wie kann ich in einem Makro sagen, dass eine bestimmte Konfiguration aktiviert werden soll??? Viele Grüße Sven 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: 30. Jun. 2008 10:26 <-- editieren / zitieren --> Unities abgeben:          Nur für cax sven
|
cax sven Mitglied CAx/PDM Manager
 
 Beiträge: 108 Registriert: 23.06.2008
|
erstellt am: 30. Jun. 2008 12:59 <-- editieren / zitieren --> Unities abgeben:         
Wenn ich die Baugruppe aus Excel heraus starte sieht mein Makro "bis jetzt" so aus. Wie komme ich an die Objekte heran? Public Sub SWX () Dim lngTaskID As Long Dim SWxSource As String Dim CAxDokument As String Dim SLDasm As String Dim CallSWx As String SWxSource = "D:\Win_CAx\Programme\SolidWorks\sldworks.exe" CAxDokument = "XX0000000XX_Anschluss-Saugseite.SLDASM" SLDasm = "H:\_CAx-Projekte\CAD_Daten\_BG-VR63S11C1UM0630\Ansaugseite\" & CAxDokument CallSWx = SWxSource & " " & SLDasm lngTaskID = Shell(CallSWx, vbMaximizedFocus) AppActivate Application.Caption, True End Sub Oder muss ich das Öffnen der Baugruppe anders gestalten? 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. Jul. 2008 15:30 <-- editieren / zitieren --> Unities abgeben:          Nur für cax sven
Mit den SolidWorks-API-Befehlen sieht das mitten im Code dann so aus: (Anstelle des "" kannst Du gezielt eine Konfiguration aufrufen) Dim swApp As Object Dim Model As Object Dim Dateiname As String ... Set swApp = CreateObject("SldWorks.Application") Worksheets("Parts").Activate Dateiname = Dir(Range("D4").Value & "\*.*asm") Pfad = Range("D4").Value & "\" zeile = 8 Range("A" & zeile).Select Do While Dateiname <> "" 'alle BG Set Model = swApp.OpenDoc6 Pfad & Dateiname, swDocAssembly, swOpenDocOptions_Silent, "", fileerror, filewarning ... ------------------ Lutz Federbusch Mein Gästebuch Der Mensch, Herr oder Sklave der Technik? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cax sven Mitglied CAx/PDM Manager
 
 Beiträge: 108 Registriert: 23.06.2008
|
erstellt am: 02. Jul. 2008 20:20 <-- editieren / zitieren --> Unities abgeben:         
erste einmal vielen Dank für die guten Tipps. Ich muss aber leider sagen, dass sich SolidWorks sowie die Baugruppe öffnet, sich die Konfiguration aber leider nicht aktiviert. Habe keine Ahnung mehr, was ich machen soll - aber trotzdem, vielen Dank noch mal. Gruß Sven 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: 03. Jul. 2008 08:28 <-- editieren / zitieren --> Unities abgeben:          Nur für cax sven
|
Tim Kühl Mitglied Dipl.-Ing(FH)

 Beiträge: 19 Registriert: 13.05.2008 HP Workstation xw4300 Intel Core 2 CPU; 3.40GHz 2 GB RAM NVIDIA Quadro FX 1400 --- X86 --- Windows XP Professional SP2 SolidWorks 2008 SP3.0 MS Office Prof 2003
|
erstellt am: 03. Jul. 2008 10:05 <-- editieren / zitieren --> Unities abgeben:          Nur für cax sven
Hi alle miteinand! Zitat:
Dim swApp As Object Dim Model As Object
Wenn Du dies in Excel verwendest geht es schon mal nicht, da der Verweis auf SWX nicht gegeben ist. Das "Object" wäre in Deinem Fall wie hier geschrieben: Dim swApp As SldWorks.SldWorks Dim Model As SldWorks.ModelDoc2 <-- Da bin ich mir mit dem Object nicht ganz sicher! Außerdem musst Du im VBA-Editor unter Extras->Verweise die SldWorks 200X Type Library aktivieren! Viele Grüße Tim 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: 03. Jul. 2008 11:54 <-- editieren / zitieren --> Unities abgeben:          Nur für cax sven
Hallo Tim, doch, das geht schon so mit der generischen Deklaration, mache ich dauernd und ausschließlich, sobald ich Code habe, den ich veröffentlichen will. Das mach ich damit ich eben nicht in die ganzen Diskussionen mit den Verweise und wieso klappt das nicht und welche Version hast du usw. komme. Das Ganze nennt sich Late binding und funktioniert ganz hervorragend (ja, ja, ich weiß, kein Intellisense, Ausführungsgeschwindigkeitsverlust nahezu im Millisekundenbereich und außerdem ist standardmäßig ein Verweis angehakt wenn man mit dem Makrorecorder ein neues Makro erzeugt ) Aber gehen tut das schon. Da uns Sven seinen Code nicht verraten will gehe ich mal davon aus, dass er weiterhin versucht per Shell das SolidWorks zu starten und die Datei per Commandlineargument übergibt, da kann man auch keine Konfiguration mitgeben. Und wie Lutz beschrieben hat musst du bei OpenDoc6 den Konfigurationsnamen schon korrekt mitgeben, sonst klappt das auch nicht. So etwas ohne den Code zu sehen zu debuggen ist nicht ganz einfach  Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Stefans SolidWorks Blog
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cax sven Mitglied CAx/PDM Manager
 
 Beiträge: 108 Registriert: 23.06.2008
|
erstellt am: 03. Jul. 2008 15:45 <-- editieren / zitieren --> Unities abgeben:         
ich bin zur zeit etwas konfus, da ich ein Projekt habe und noch anderweitig eingebunden bin. Ich verrate euch natürlich gerne meinen Code. Public Const sDocPathName As String = "H:\_CAx-Projekte\Daten\ _ CAD_Daten\_BG-VR63S11C1UM0630\Ansaugseite\" Public Const sDocFileName As String = "XX0000000XX_Anschluss-Saugseite.SLDASM" Public swApp As Object Public SwAssemblyDoc As Object Public SwConfiguration As Object Public swModel As Object Public Part As Object Public nDocType As Long Public nErrors As Long Public nWarnings As Long Public sDocConfig As String Public SwDocType As Byte ' Typ des SwModels Sub SWX () Set swApp = CreateObject("SldWorks.Application") sDocConfig = "Variante_" & frm_FanSeS.txt_Anschluss.Value & "-" & frm_FanSeS.txt_Variante.Value
swApp.OpenDoc6 sDocPathName & sDocFileName, 2, 0, sDocConfig, nErrors, nWarnings . . . End Sub Durch die ganze Fummelei gibt es bestimmt noch einige unnötige Deklarationen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cax sven Mitglied CAx/PDM Manager
 
 Beiträge: 108 Registriert: 23.06.2008 SolidEdge ST8 Windows 7 x64 DELL M4600 12GB RAM Nvidia Quadro 2000
|
erstellt am: 08. Jul. 2008 11:10 <-- editieren / zitieren --> Unities abgeben:         
Also ich habe euch meinen Code in der letzten Antwort aufgeschrieben und hoffe ihr habt noch Lust den Fehler zu finden. Mit diesem Makro kann ich SolidWorks aufrufen und die Baugruppe öffnen, aber es aktiviert keine Konfiguration  . Die Konfigurationen besitzen auch noch abgeleitete Konfigurationen, aber auch die kann ich nicht ansprechen. Wer weiss Rat? Ich danke euch jetzt schon mal für eure Tipps und Tricks. Gruss Sven 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: 08. Jul. 2008 12:02 <-- editieren / zitieren --> Unities abgeben:          Nur für cax sven
Hallo Sven Zitat: Original erstellt von cax sven: Mit diesem Makro kann ich SolidWorks aufrufen und die Baugruppe öffnen, aber es aktiviert keine Konfiguration
der Code sieht in meinen Augen ganz gut aus, wenn es jetzt die Konfigurationen nicht aktiviert sind di enicht richtig geschrieben. Da nicht zu sehen ist, was in deinen Textfelder steht, ob da noch Leerzeichen dranhängen, ob deine Konfigurationsnamen wirklich so komisch aufgebaut sind usw. bleibt es weiter ein stochern im Nebel. ich würde mal nach der Zeile:
Code: sDocConfig = "Variante_" & frm_FanSeS.txt_Anschluss.Value & "-" & frm_FanSeS.txt_Variante.Value Debug.print "!" & sDocConfig & "!"
erst mal versuchen herauszufinden, was wirklich genau in deinem String für den Konfigurationsnamen drin steht und ob die gewünschte Konfiguration in dem File wirklich genau so heißt. Ich vermute hier den Fehler.Und dann könnt enatürlich auch noch der Inhalt von nErrors und nWarnings einen Hinweis darauf geben, was wohl nicht funktioniert  Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Stefans SolidWorks Blog
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cax sven Mitglied CAx/PDM Manager
 
 Beiträge: 108 Registriert: 23.06.2008
|
erstellt am: 08. Jul. 2008 15:07 <-- editieren / zitieren --> Unities abgeben:         
Hallo Stefan, vielen Dank für deine Antwort. Ich habe noch einmal alles geprüft. Die Konfigurationsnamen werden ohne Fehler im Direktfenster angezeigt und auch nErrors und nWarnings zeigen keinen Fehler an . Du bist der Spezialist, aber dennoch eine kleine Frage. Kann es sein, dass der Aufruf der Konfiguration zu schnell ist, d.h er zu früh los geschickt wird, bevor die ziemlich komplexe Baugruppe komplett geöffnet ist??? Gruß Sven 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: 08. Jul. 2008 15:55 <-- editieren / zitieren --> Unities abgeben:          Nur für cax sven
Hallo Sven, wenn du dir sicher bist, dass der Konfigurationsname richtig geschrieben ist kann es nur noch eine Ursache haben: die Baugruppe, die du da mit OpenDoc6 öffnen möchtest ist bereits in SolidWorks geöffnet und eine andere Konfiguration ist aktiv. Das Ding ist nicht zufällig eine Unterbaugruppe einer bereits geöffneten Assembly oder Zeichnung? Du hast sicherheitshalber zum Testen alle Dokumente in SolidWorks geschlossen oder dein Makro direkt nach dem Starten von SolidWorks probiert? Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Stefans SolidWorks Blog Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cax sven Mitglied CAx/PDM Manager
 
 Beiträge: 108 Registriert: 23.06.2008
|
erstellt am: 08. Jul. 2008 16:04 <-- editieren / zitieren --> Unities abgeben:         
Hallo Stefan, SolidWorks ist gar nicht offen. Wenn ich teste schliesse ich SoldWorks direkt wieder, ohne zu Speichern. Wenn man die Assembly normal über SolidWorks öffnet, ist ja immer eine Konfiguration aktiv - die zuletzt verwendete und die ist auch dann aktiv, wenn ich den Test mache. Ansonsten öffne ich im Test SolidWorks immer neu. Die Assembly ist auch nicht irgendwo eingebaut - noch nicht. Gruß Sven 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: 08. Jul. 2008 16:13 <-- editieren / zitieren --> Unities abgeben:          Nur für cax sven
Hi Sven, dann bin ich mit meinem Latein auch am Ende. Ich hab gerade extra noch mal ein Excelblatt gemacht, von dem ich aus das SolidWorks auch starte und dann die Baugruppe aufrufe, der Code sieht ganz einfach aus:
Code: Const sDocPathName As String = "I:\sapwork\test\" Const sDocFileName As String = "TEST.SLDASM"Private Sub CommandButton1_Click() Dim swApp As Object Dim nErrors As Long Dim nWarnings As Long Dim sDocConfig As String Set swApp = CreateObject("SldWorks.Application") sDocConfig = "testconfig" swApp.OpenDoc6 sDocPathName & sDocFileName, 2, 0, sDocConfig, nErrors, nWarnings End Sub
Klappt, SolidWorks wird gestartet, Baugruppe aufgerufen, mit der Konfiguration testconfig, während "Standard" die aktive Konfiguration ist.SW2008 SP4.0, Excel 2003, Windows XP SP2 Entschuldige, wenn ich noch mal frage: bist du dir wirklich ganz bestimmt ohne Zweifel vollkommen überzeugt und sicher, dass du den Konfigurationsnamen richtig geschrieben hast? Versuch es doch mal, in dem du den richtig so wie ich erst mal als einen String reinschreibst statt zusammensetzt ... Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Stefans SolidWorks Blog Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cax sven Mitglied CAx/PDM Manager
 
 Beiträge: 108 Registriert: 23.06.2008
|
erstellt am: 08. Jul. 2008 16:34 <-- editieren / zitieren --> Unities abgeben:         
Hallo Stefan, ich habe den Konfigurationsnamen auch schon per Hand gesetzt - half alles nichts. Ich arbeite mit Office 2007 - hoffe dran wird es nicht liegen. Werde deine Ratschläge alle noch einmal durchgehen inklusive einer Testbaugruppe. Sei mir nicht böse, wenn ich mich heute nicht mehr melde, muss dringend noch ein paar Modelle rendern - und das dauert - aber spätestens Morgen früh hast du eine Antwort. Danke dir nochmals . Gruß Sven Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cax sven Mitglied CAx/PDM Manager
 
 Beiträge: 108 Registriert: 23.06.2008 SolidEdge ST8 Windows 7 x64 DELL M4600 12GB RAM Nvidia Quadro 2000
|
erstellt am: 08. Jul. 2008 19:55 <-- editieren / zitieren --> Unities abgeben:         
Hallo Stefan, habe gerade einmal eine Testbaugruppe aufgebaut und es funktioniert . Hab nie an deiner und den anderen Meinungen gezweifelt, aber jetzt hab ich es wenigstens einmal gesehen, dass es klappt. Hab tausend Dank für deine Hilfe, werde mal schauen, warum es bei der anderen Baugruppe nicht funktioniert. Gruß Sven Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |