| | |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| | |
 | SOLIDWORKS Grundlagen, ein Seminar am 26.01.2026
|
|
Autor
|
Thema: SWX-Datei aus Excel öffnen (4553 mal gelesen)
|
Konstruktulf Mitglied Maschbau-Ing.

 Beiträge: 41 Registriert: 18.08.2005 SWX 2007 Xeon@3,2GHz NVidia Quadro FX 1100
|
erstellt am: 29. Sep. 2005 14:57 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich möchte gerne aus meiner Berechnungsdatei heraus mittels eines VBA-Makros die zugehörige SWX  -Modelldatei öffnen. SWX  wird auch gestartet, aber dann kommt die Meldung: "Der eingegebene Dateiname ist ungültig, wurde nicht gefunden, ist gesperrt oder ein inkompatibler Dateityp." Ich bin mir aber sicher, dass die Pfade zum Programm und zur Datei stimmen im Makrocode. Weiß jemand Rat? Gruß Ulf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jan Boettcher Mitglied
 
 Beiträge: 184 Registriert: 22.06.2005
|
erstellt am: 29. Sep. 2005 15:28 <-- editieren / zitieren --> Unities abgeben:          Nur für Konstruktulf
|
Konstruktulf Mitglied Maschbau-Ing.

 Beiträge: 41 Registriert: 18.08.2005 SWX 2007 Xeon@3,2GHz NVidia Quadro FX 1100
|
erstellt am: 04. Okt. 2005 13:55 <-- editieren / zitieren --> Unities abgeben:         
Hallo, konnte erst jetzt wieder ins Internet... Also, der Quellcode lautet: Sub SWX_Öffnen() ' Tastenkombination: Strg+s ' Dim Datei As String Datei = Shell("C:\Programme\SolidWorks\SLDWORKS.exe ThisWorkbook.Path & \SWX \Baugruppe.SLDASM") End Sub Es soll die Datei Baugruppe.sldasm geöffnet werden. Ich bin mir nicht so sicher, ob ich das so mit dem Relativpfad machen kann, es kommt aber mit diesem sowie mit absolutem Pfad die gleiche Fehlermeldung. Der Pfad an sich stimmt aber. Gruß Ulf 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: 04. Okt. 2005 16:00 <-- editieren / zitieren --> Unities abgeben:          Nur für Konstruktulf
Die von Dir eingesetzten Methoden sind nicht gut. Schau Dir lieber mal die Api-Hilfe an. Zum Öffnen, Aktivieren und Schließen von Dokumenten gibt es sogar gute Beispiele, zum Beispiel das SaveAs-Example. Die Pfade zum Öffnen oder Speichern kannst Du dann aus Strings zusammensetzen... Und was Jan meint, daß ein Zeichen zuviel oder zuwenig beteiligt ist, kommt schon auch öfter vor! ------------------ Lutz Federbusch Mein Gästebuch Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jan Boettcher Mitglied
 
 Beiträge: 184 Registriert: 22.06.2005
|
erstellt am: 04. Okt. 2005 16:44 <-- editieren / zitieren --> Unities abgeben:          Nur für Konstruktulf
|
Andreas Müller Mitglied Masch. Ing. HTL / Betriebsing. STV
   
 Beiträge: 1151 Registriert: 11.04.2001
|
erstellt am: 04. Okt. 2005 16:49 <-- editieren / zitieren --> Unities abgeben:          Nur für Konstruktulf
Zitat: Original erstellt von Konstruktulf: ...Datei = Shell("C:\Programme\SolidWorks\SLDWORKS.exe ThisWorkbook.Path & \SWX\Baugruppe.SLDASM") ...
Ich meine, dass Dir zumindest mal eine falsche Formatierung untergerutscht ist: Der Teil >\SWX\Baugruppe.SLDASM< sollte ein String sein, ist aber keiner, sondern eher eine Variable. Vielleicht könnte es so aussehen: Datei = Shell("C:\Programme\SolidWorks\SLDWORKS.exe ThisWorkbook.Path & "\SWX\Baugruppe.SLDASM"") ...oder so ähnlich. Ich komme darauf, weil >ThisWorkbook.Path< vermutlich auch einen String zurückgibt. EDIT Arrrghhhh... knapp zu spät!!  ENDEDIT ------------------ Gruss Andreas A+E Müller AG [Diese Nachricht wurde von Andreas Müller am 04. Okt. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Konstruktulf Mitglied Maschbau-Ing.

 Beiträge: 41 Registriert: 18.08.2005 SWX 2007 Xeon@3,2GHz NVidia Quadro FX 1100
|
erstellt am: 05. Okt. 2005 09:03 <-- editieren / zitieren --> Unities abgeben:         
Hm... Das klappt bei mir immer noch nicht... Ich hatte den Code an Jan´s Version angepasst, doch auch mit einer absolut verschreibungssicheren Dummidatei und allen möglichen Pfaden kommt immer die gleiche Fehlermeldung von SWX  ... @Jan: Wie sieht denn bei Deiner Version der gesamte Code aus? Vielen Dank für Eure Mühen!!! Ulf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jan Boettcher Mitglied
 
 Beiträge: 184 Registriert: 22.06.2005
|
erstellt am: 05. Okt. 2005 09:27 <-- editieren / zitieren --> Unities abgeben:          Nur für Konstruktulf
Hallo Ulf, Da ist nicht viel dran: Code:
Sub vbtest() res = Shell("e:\programme\solidworks\sldworks.exe " + ThisWorkbook.Path + "\testklotz.sldprt") End Sub
res ist ein Double. Achte auf das Leerzeichen nach ...sldworks.exe. Ansonsten noch einmal der Hinweis mit dem Leerzeichen. Wenn die Excelmappe in einem Pfad liegt, der ein Leerzeichen enthält, dann funktioniert das Ganze oben nicht mehr, weil SWX dann mit zwei Argumenten aufgerufen wird. Sollte das der Fall sein, dann sollte das Folgende ganz allgemeingültig klappen:Code:
Sub vbtest() res = Shell("e:\programme\solidworks\sldworks.exe """ + ThisWorkbook.Path + "\testklotz.sldprt""") End Sub
Gruß Jan ------------------ Ingenieurbüro Jan Böttcher jan.boettcher@ib-boettcher.de www.ib-boettcher.de 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: 05. Okt. 2005 09:42 <-- editieren / zitieren --> Unities abgeben:          Nur für Konstruktulf
Also mir gefällt ja der Shell-Befehl nicht, da er im Zusammenhang mit anderen laufenden Programmen öfter mal Probleme bereitet. Versuche es doch mal so: Private Sub SolidWorks_DXF() '##### Lädt die in Spalte A gefundenen Nummern als SW-Zeichnung und speichert sie als DXF ###### Dim swApp As Object Dim Zeichnung As Object Dim Zeile As String Dim Spalte As String Dim Nummer As String Const swDocDrawing = 3 Spalte = "A" Zeile = 2 Range(Spalte & Zeile).Select Nummer = ActiveCell.FormulaR1C1 ' erste Nummer holen While Nummer <> "" Set swApp = CreateObject("SldWorks.Application") ' SW holen, sollte besser schon laufen Set Zeichnung = swApp.OpenDoc("C:\Temp\" + Nummer, swDocDrawing) ' Zeichnung holen If Zeichnung Is Nothing Then MsgBox ("Fehler beim Laden von : C:\Temp\" + Nummer) Else Zeichnung.SaveAs2 "C:\Temp\" + Nummer + ".DXF", 0, True, False ' DXF speichern swApp.CloseDoc Zeichnung.GetTitle ' wieder schließen End If 'Zeichnung da? Speichern! Zeile = Zeile + 1 Range(Spalte & Zeile).Select Nummer = ActiveCell.FormulaR1C1 Wend MsgBox ("Fertig!") End Sub ------------------ Lutz Federbusch Mein Gästebuch Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Müller Mitglied Masch. Ing. HTL / Betriebsing. STV
   
 Beiträge: 1151 Registriert: 11.04.2001
|
erstellt am: 05. Okt. 2005 09:48 <-- editieren / zitieren --> Unities abgeben:          Nur für Konstruktulf
|
Konstruktulf Mitglied Maschbau-Ing.

 Beiträge: 41 Registriert: 18.08.2005 SWX 2007 Xeon@3,2GHz NVidia Quadro FX 1100
|
erstellt am: 05. Okt. 2005 10:14 <-- editieren / zitieren --> Unities abgeben:         
Oh hauehaueha, nu wird dat aber wat kompliziert... Ich hatte gehoft, dass das etwas simpler gehen würde... Wie wär´s denn, wenn man unter Windows eine Verknüpfung zu der Baugruppe erstellt, meinetwegen im gleichen Ordner wie die Exceldatei. Und dann die Verknüpfung durch ein Makro öffnen lässt. Müsste nicht dann Windows den Rest machen? Nur sone Idee... Gruß Ulf 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: 05. Okt. 2005 10:56 <-- editieren / zitieren --> Unities abgeben:          Nur für Konstruktulf
|
Konstruktulf Mitglied Maschbau-Ing.

 Beiträge: 41 Registriert: 18.08.2005 SWX 2007 Xeon@3,2GHz NVidia Quadro FX 1100
|
erstellt am: 05. Okt. 2005 11:59 <-- editieren / zitieren --> Unities abgeben:         
Na gut, die Frage war jetzt berechtigt... ;o) Aber das Problem ist eben, je aufwendiger die Programmierung, desto mehr Fehler können sich einschleichen. Wie sagte noch mein Informatik-Prof? "Die Summe der Fehler in einem Programm ist eine Konstante..." Ich hätte halt nicht gedacht, dass es so aufwendig wir, mittels eines Makros aus Excel eine Datei zu öffnen... Ulf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jan Boettcher Mitglied
 
 Beiträge: 184 Registriert: 22.06.2005
|
erstellt am: 05. Okt. 2005 12:13 <-- editieren / zitieren --> Unities abgeben:          Nur für Konstruktulf
Hallo Ulf, Was ist denn jetzt aufwendig? Die 'quick and dirty' Lösung mit dem Shell -Kommando funktioniert im Alltagsbetrieb sicher ausreichend zuverlässig, wenn Du das Makro nur für Dich und Deine Kollegen verwendest. Die sauberere Lösung, die Andreas angesprochen und Lutz als Beispiel eingestellt hat, hast Du ja jetzt auch zur Verfügung. Wenn Alles für Alle immer supereinfach ist und gleichzeitig auch noch supersicher ist, dann muss ich mir wohl einen neuen Job suchen  Gruss Jan ------------------ Ingenieurbüro Jan Böttcher jan.boettcher@ib-boettcher.de www.ib-boettcher.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |