| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| SolidCAM Professor Videos | Tipps & Tricks (SolidCAM) |
Autor
|
Thema: Baugruppe erstellen aus einer Tabelle (mit Makro?) (1966 mal gelesen)
|
mamatt Mitglied
Beiträge: 55 Registriert: 11.07.2019 Solidworks 2019 SP 5.0 SOLIDWORKS PDM 2019 SP 5.0
|
erstellt am: 30. Jul. 2019 09:02 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen Ich bin auf der Suche nach einem Weg, wo ich anhand einer Excel Tabelle Solidworks alle Dateien in eine Baugruppe zusammen laden kann. Die Ausrichtung ist immer absolut und muss nicht angepasst werden. Wie geht dies am besten? Ist dies mit einem Makro lösbar? Wie müsste das Makro ausschauen? Ablauf: Leere Baugruppe öffnen. Makro: Datei 1 Einfügen ev. Speichern Datei 2 Einfügen ev. Speichern Datei 3 Einfügen ev. Speichern etc. Besten Dank..... 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: 30. Jul. 2019 10:16 <-- editieren / zitieren --> Unities abgeben: Nur für mamatt
Hallo mamatt, kein großes Problem Du solltest Dir noch überlegen, ob Du das von Excel oder von SolidWorks aus machen willst nur so als Grobablauf (wenn von SolidWorks aus) Prüfen ob Excel läuft Wenn ja--> Excel Objekt holen Wenn nein--> Excel starten siehe dazu auch https://support.microsoft.com/de-de/help/288902/getobject-and-createobject-behavior-of-office-automation-servers
Excel_Datei mit den Informationen öffnen prüfen ob Daten in Excel-Datei vorhanden sind Wenn nein--> Ende Wenn ja eine neue SolidWorks Baugruppe öffnen (NewDocument) Schleife so lange Zeilen mit Werten in der Excel Datei vorhanden sind Dateiname aus Excel Datei lesen prüfen ob die Datei existiert Teil einfügen (AddComponent5) Schleifenende Excel_Datei Schließen Wenn Excel zu Beginn nicht offen war --> Excel schließen anbei ein Codefragment - fürs Öffnen von Excel - einlesen von Werten aus einer Excel Datei "Combo-01.xls", die im Verzeichnis des Makros gespeichert ist - zuweisen der Werte an eine Combobox Dim excel As excel.Application Dim swapp As Object Dim x, y As Integer Dim excel_NOK As Boolean Dim FileName As String Set swapp = CreateObject("SldWorks.Application") On Error Resume Next ' Versuch einen Verweis auf Excel zu bekommen Set excel = GetObject(, "Excel.Application") ' Wenn ein Fehler auftritt dann läuft Excel noch nicht If Err.Number <> 0 Then excel_NOK = True Err.Clear ' Wenn Excel noch nicht läuft, dann wird es gestartet If excel_NOK = True Then Set excel = CreateObject("excel.application") End If 'Dateiname des Makros FileName = swapp.GetCurrentMacroPathName 'Excel Datei öffnen excel.workbooks.open Left(swapp.GetCurrentMacroPathName, InStrRev(swapp.GetCurrentMacroPathName, "\")) + "Combo-01.xlsx" 'Werte stehen in der 1. Spalte und ab der 2. Zeile x = 1 y = 2 'es wird davon ausgegange, dass die Daten im aktiven Tabellenblatt befinden 'ev. muss hier noch eine Prüfung eingebaut werden While excel.ActiveSheet.Cells(y, x).Value <> "" If y = 2 Then ComboBox1.Value = excel.ActiveSheet.Cells(y, x).Value ComboBox1.AddItem excel.ActiveSheet.Cells(y, x).Value y = y + 1 Wend Achtung: im VBA Editor unter Extras->Verweise den Verweis auf Excel Object Library hinzufügen
------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mamatt Mitglied
Beiträge: 55 Registriert: 11.07.2019 Solidworks 2019 SP 5.0 SOLIDWORKS PDM 2019 SP 5.0
|
erstellt am: 30. Jul. 2019 13:43 <-- editieren / zitieren --> Unities abgeben:
Hallo Heinz Besten Dank für deine Info. Ich bin bei der Programmierung noch an Anfang. Kann ich deinen Code nicht einfach in die VBA hinein kopieren? Es kommt schon auf der ersten Zeile ein Fehler. Ist dieses Codefragment nur für das Excel? Wie bekomme ich die Datei ins SolidWorks?
[Diese Nachricht wurde von mamatt am 30. Jul. 2019 editiert.] 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: 30. Jul. 2019 13:55 <-- editieren / zitieren --> Unities abgeben: Nur für mamatt
|
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2776 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 30. Jul. 2019 13:58 <-- editieren / zitieren --> Unities abgeben: Nur für mamatt
Hallo, hier fehlt dir wahrscheinlich der Verweis auf Excel im VBA-Editor, diese kannst du unter Extras -> Verweise... aktivieren, dort suchst du dann nach Microsoft Excel ##.0 Object Library (## = Versionsnummer). Gruß Bernd EDIT: Hat Heinz ja ganz Vorbildlich im Nachsatz erwähnt das der Verweis gesetzt werden muss ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete [Diese Nachricht wurde von bk.sc am 30. Jul. 2019 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mamatt Mitglied
Beiträge: 55 Registriert: 11.07.2019 Solidworks 2019 SP 5.0 SOLIDWORKS PDM 2019 SP 5.0
|
erstellt am: 30. Jul. 2019 15:31 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen Ich habe diesen Hacken zu beginn nicht gesetzt. Bei mir funktioniert es aber trotzdem noch nicht. Ich kann mich mit den Einzelschritten durch den Programmcode klicken ohne Fehler. Es passiert aber nichts. Wo muss ich den Dateipfad/Dateinamen vermerken auf das Excel? 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: 30. Jul. 2019 17:19 <-- editieren / zitieren --> Unities abgeben: Nur für mamatt
Zitat: Original erstellt von nahe:
Code: 'Dateiname des Makros FileName = swapp.GetCurrentMacroPathName 'Excel Datei öffnen excel.workbooks.open Left(swapp.GetCurrentMacroPathName, InStrRev(swapp.GetCurrentMacroPathName, "\")) + "Combo-01.xlsx"
Hallo sollte bestimmt mal werden:
Code: Excel.workbooks.open Left(FileName, InStrRev(FileName, "\")) + "Combo-01.xlsx"
tut aber der Funktion sicher nicht groß schaden … ;) Zitat:
- einlesen von Werten aus einer Excel Datei "Combo-01.xls", die im Verzeichnis des Makros gespeichert ist - zuweisen der Werte an eine Combobox - 'Werte stehen in der 1. Spalte und ab der 2. Zeile - 'es wird davon ausgegange, dass die Daten im aktiven Tabellenblatt befinden
Hast du die Bedingungen alle erfüllt? - ExcelDatei im gleichen Verzeichnis wie das Makro - Daten im aktiven Tabellenblatt, Spalte 1, Zeile 2 ff - die Combobox muss es auch noch irgendwo geben - ich tippe mal auf eine Userform im aktiven Makro, die irgendwo mit "Show" auch noch angezeigt werden muss. hast du mit der Variablenüberwachung mal geschaut, ob die Datei gelesen wird? Gruß, Christian Edith: oops, Häkchen oben vergessen ... [Diese Nachricht wurde von Christian_W am 30. Jul. 2019 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mamatt Mitglied
Beiträge: 55 Registriert: 11.07.2019 Solidworks 2019 SP 5.0 SOLIDWORKS PDM 2019 SP 5.0
|
erstellt am: 30. Jul. 2019 17:44 <-- editieren / zitieren --> Unities abgeben:
Hallo Christian ich sehe ich bin da noch sehr unerfahren. :-( Ich habe nun die Excel Datei in Combo-01 Umbenennt. Wie muss die Tabelle benannt sein? Tabelle1? Ich habe keine Combobox. Wie muss ich diese Einstellen, Programmieren oder so? 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: 30. Jul. 2019 18:45 <-- editieren / zitieren --> Unities abgeben: Nur für mamatt
Hallo, wie die Tabelle heisst, ist völlig egal. (steht in den Hinweisen indirekt drin / Stichwort "aktives Tabellenblatt") und der Beispielcode von Heinz geht halt davon aus, dass die Daten in diese Combobox hineinsollen und angezeigt werden. Brauchst du für deinen Zweck aber nicht. Die Unterscheidung zwischen erster Zuweisung und weiteren Zuweisungen brauchst du dann auch nicht. probier doch mal einfach die Werte direkt auszugeben. Code:
While excel.ActiveSheet.Cells(y, x).Value <> "" 'If y = 2 Then ComboBox1.Value = excel.ActiveSheet.Cells(y, x).Value 'ComboBox1.AddItem excel.ActiveSheet.Cells(y, x).Value debug.print excel.ActiveSheet.Cells(y, x).Value y = y + 1 Wend
Wenn das klappt, kannst du mit den Werten auch weiterarbeiten.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mamatt Mitglied
Beiträge: 55 Registriert: 11.07.2019 Solidworks 2019 SP 5.0 SOLIDWORKS PDM 2019 SP 5.0
|
erstellt am: 31. Jul. 2019 07:52 <-- editieren / zitieren --> Unities abgeben:
Mit deiner Änderung geht nun das Excel auf. Die Bauteile werden mir aber nicht in die Assembly geladen. Ist es so, dass der Code für meine benötigte Anwendung noch nicht fertig ist? Ich möchte sämtliche Teile welche ich im Excel habe automatisch in die Assy laden. Ich habe nochmal einige Bilder im Anhang mit den Ablagen etc. damit ihr ev. mein Fehler findet. 1. Der Makro Code "forum1.swp" und das Excel "Combo-01.xls" sind im gleichen Ordner. 2. Im Excel sind die Werte ab dem Feld A2. (Dort habe ich den Pfad zu der Datei erfasst) 3. Das Makro Starte ich in SolidWorks. Dort habe ich eine leere Assembly geöffnet. 4. Im SolidWorks geht nichts, nur das Excel öffnet sich. [Diese Nachricht wurde von mamatt am 31. Jul. 2019 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2776 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 31. Jul. 2019 08:22 <-- editieren / zitieren --> Unities abgeben: Nur für mamatt
Hallo, Zitat: Ist es so, dass der Code für meine benötigte Anwendung noch nicht fertig ist?
da liegst du richtig, dieser Code war nur ein Beispiel das du nicht ganz bei null anfangen musst, zum momentanem Zeitpunkt müssten alle Dateipfade im Überwachungsfenster im VBA-Editor stehen, weil es natürlich sinn macht ob das Macro erstmal alle Dateipfade einliest. Einfügen kannst die Komponenten dann mit AddComponent5 Method (IAssemblyDoc) oder besser noch AddComponents3 Method (IAssemblyDoc). Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete [Diese Nachricht wurde von bk.sc am 31. Jul. 2019 editiert.] 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: 31. Jul. 2019 09:22 <-- editieren / zitieren --> Unities abgeben: Nur für mamatt
Hallo mamatt, Du darfst nicht gleich ein fertiges Makro erwarten! Wie Bernd schon geschrieben hat, sollte Dir das Code-Schnipsel nur mal den Start erleichtern. Du musst schon selbst auch in der Online Hilfe und im WWW stöbern. Wenn Du dann nicht weiterkommst, wird Dir hier sicher weiter geholfen. Aber dann solltest Du schon etwas eigenen Code haben. Wenn das Dein erstes Makro ist, dann hast Du Dir nicht gerade was einfaches vorgenommen.
------------------ Grüße Heinz 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: 31. Jul. 2019 09:49 <-- editieren / zitieren --> Unities abgeben: Nur für mamatt
Zitat: Original erstellt von nahe: … anbei ein Codefragment - fürs Öffnen von Excel - einlesen von Werten aus einer Excel Datei "Combo-01.xls", die im Verzeichnis des Makros gespeichert ist - zuweisen der Werte an eine Combobox …
Was an diesem Text ist so schwer zu verstehen ??? auch die Methoden NewDocument und AddComponent5 hat Heinz schon erwähnt. Unter Hilfe im SolidWorks gibt es api-hilfe (auf englisch), da findet man mit diesen Stichwörtern Erklärungen und Beispielprogramme. Und es gibt bei Online-Lektionen auch 2 Lektionen zu api. Wenn du ganz am Anfang stehst, solltest du das mal durchgehen. Die sind mit 2:15h und 1h angegeben. Gruß, Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mamatt Mitglied
Beiträge: 55 Registriert: 11.07.2019 Solidworks 2019 SP 5.0 SOLIDWORKS PDM 2019 SP 5.0
|
erstellt am: 31. Jul. 2019 10:37 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen Ich habe gedacht, es sei einfacher als es nun ist. Da mein wissen über die Programmierung noch nicht sehr gross ist, ist für mich diese Programmsprache noch etwas schwierig zum verstehen. Ich werde mir nun die Online-Lektionen anschauen und versuchen so meine Aufgabe zu lösen. Allen hier im Forum jedenfalls ein grosser Dank für die Imputs und Hilfe. 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: 31. Jul. 2019 10:45 <-- editieren / zitieren --> Unities abgeben: Nur für mamatt
Das wird schon, wir haben alle mal angefangen da manche Befehle nicht aufgezeichnet werden, sind die manchmal nicht so einfach zu finden. aber nicht entmutigen lassen und in so einem Fall gerne wieder fragen Gruß, Christian
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |