| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
 | Baden-Württembergischer Schreinertag, eine Veranstaltung am 05.07.2025
|
Autor
|
Thema: Solidworks VBA Exceltabelle für Muster importieren (248 / mal gelesen)
|
Obi1317 Mitglied Konstrukteur

 Beiträge: 27 Registriert: 15.02.2016 Win10, SWX2023
|
erstellt am: 30. Apr. 2025 15:05 <-- editieren / zitieren --> Unities abgeben:         
Moin zusammen, ich hätte noch mal eine Frage zu VBA. Folgende Ausgangslage: Ich habe im SWX ein Part offen, welches ein variables Muster hat. Für dieses Muster möchte ich per VBA die Excel-Mustertabelle importieren. Hier der nicht funktionierende Code (Nebenfrage: Wie gibt man hier im Forum Programmcode ein?): Option Explicit Dim swApp As Object Sub main() Set swApp = Application.SldWorks Dim swModel As Object Set swModel = swApp.ActiveDoc Dim ExcelFile As String Dim swTab As Integer Dim swPart As Object Set swPart = swModel Dim swFeature As Object Set swFeature = swPart.FeatureByName("Muster") ExcelFile = "\\[UNC-Pfad]\Bohrbild_Importtabelle1.xlsx" swTab = swFeature.DimPatternFeatureData.ImportFromExcel(ExcelFile) '-> Fehler swModel.EditRebuild3 End Sub Kann irgendwer mir hier helfen, besser zu verstehen, wie ich die Features und Eigenschaften anzusprechen habe, damit es klappt? Vielen Dank im Voraus. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HenryV Mitglied Konstrukteur, Engineering
  
 Beiträge: 823 Registriert: 18.05.2005 SolidWorks 2022 x64 SP5.0 Dell Precision 5820 Intel Xeon W-2125 4x4GHz NVIDIA Quadro P2000 5GB 32GB RAM 2x Dell U2412M, 24" TFT Windows 10 Enterprise x64 22H2 Microsoft 365 E5 Microsoft Visual Studio Enterprise 2022
|
erstellt am: 30. Apr. 2025 18:02 <-- editieren / zitieren --> Unities abgeben:          Nur für Obi1317
Hallo Nachdem du das Feature hast, musst du dessen Definition abfragen-> IGetDefinition Method (IFeature) Dadurch erhältst du die IDimPatternFeatureData In dieses kannst du deine Excel-Tabelle importieren. Danach musst du das Feature noch mit IModifyDefinition2 updaten. Gruss Andreas PS: Hier mein Test-Makro. Das Importieren dauerte bei mir gefühlt echt lange, k.A. ob es an meinem PC liegt oder ob der Befehl langsam ist. Ob es auch mit einem UNC-Pfad funktioniert habe ich nicht getestet.
Code: Option Explicit Dim swApp As SldWorks.ISldWorks Dim swModel As SldWorks.IModelDoc2 Dim swPart As SldWorks.IPartDoc Dim swFeature As SldWorks.IFeature Dim swDimensionDrivenTablePatternFeat As SldWorks.IDimPatternFeatureDataDim ExcelFile As String Dim swTab As Integer Dim bRet As Boolean Sub main() Set swApp = Application.SldWorks Set swModel = swApp.IActiveDoc Set swPart = swModel Set swFeature = swPart.IFeatureByName("Muster") Set swDimensionDrivenTablePatternFeat = swFeature.IGetDefinition 'ExcelFile = "\\[UNC-Pfad]\Bohrbild_Importtabelle1.xlsx" ExcelFile = "C:\Users\HenryV\Desktop\Bohrbild_Importtabelle1.xlsx" 'swTab = swFeature.DimPatternFeatureData.ImportFromExcel(ExcelFile) '-> Fehler swTab = swDimensionDrivenTablePatternFeat.ImportFromExcel(ExcelFile) '-> Fehler ' Apply changes bRet = swFeature.IModifyDefinition2(swDimensionDrivenTablePatternFeat, swModel, Nothing): Debug.Assert bRet swModel.EditRebuild3 End Sub
PPS: Die Code Tags findest du links neben dem Eingabefeld oder du kannst sie selbst rein schreiben -> UBB-Code ------------------ 21 ist nur die halbe Antwort. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Obi1317 Mitglied Konstrukteur

 Beiträge: 27 Registriert: 15.02.2016 Win10, SWX2023
|
erstellt am: 05. Mai. 2025 12:06 <-- editieren / zitieren --> Unities abgeben:         
|
Obi1317 Mitglied Konstrukteur

 Beiträge: 27 Registriert: 15.02.2016 Win10, SWX2023
|
erstellt am: 05. Mai. 2025 13:23 <-- editieren / zitieren --> Unities abgeben:         
Nachtrag bzw. Folgefrage: Ich hab den Code in ein Excel-Makro übertragen und entsprechend verändert, damit es aus Excel heraus funktioniert. In der vorletzten Zeile gibt es aber einen Laufzeitfehler. Code:
Sub Tabelle() Dim swApp As Object Dim swModel As Object Dim swPart As Object Dim swFeature As Object Dim swDimensionDrivenTablePatternFeat As Object Dim ExcelFile As String Dim swTab As Integer Dim bRet As Boolean Set swApp = GetObject(, "SldWorks.Application") Set swModel = swApp.ActiveDoc Set swPart = swModel Set swFeature = swPart.FeatureByName("Muster") Set swDimensionDrivenTablePatternFeat = swFeature.GetDefinition ExcelFile = "\\[UNC-Pfad]\Bohrbild_Importtabelle1.xlsx" swTab = swDimensionDrivenTablePatternFeat.ImportFromExcel(ExcelFile) ' Apply changes bRet = swFeature.ModifyDefinition2(swDimensionDrivenTablePatternFeat, swModel, Nothing): Debug.Assert bRet '-> Fehler swModel.EditRebuild3End Sub
Wie muss die ich vorletzte Zeile anpassen, damit es funzt? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HenryV Mitglied Konstrukteur, Engineering
  
 Beiträge: 823 Registriert: 18.05.2005 SolidWorks 2022 x64 SP5.0 Dell Precision 5820 Intel Xeon W-2125 4x4GHz NVIDIA Quadro P2000 5GB 32GB RAM 2x Dell U2412M, 24" TFT Windows 10 Enterprise x64 22H2 Microsoft 365 E5 Microsoft Visual Studio Enterprise 2022
|
erstellt am: 05. Mai. 2025 18:32 <-- editieren / zitieren --> Unities abgeben:          Nur für Obi1317
|

| |
Obi1317 Mitglied Konstrukteur

 Beiträge: 27 Registriert: 15.02.2016 Win10, SWX2023
|
erstellt am: 06. Mai. 2025 08:36 <-- editieren / zitieren --> Unities abgeben:         
|