| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | | | | SOLIDWORKS Cloud: Anleitung zum Konstruieren im Browser |
Autor
|
Thema: Makro DesignTable Wert ändern (2549 mal gelesen)
|
kons92 Mitglied Konstrukteur
Beiträge: 91 Registriert: 07.12.2009 i920,6GB DDR3,FX3500 SW2011 SP1.0 Win7 64Bit
|
erstellt am: 15. Okt. 2010 17:31 <-- editieren / zitieren --> Unities abgeben:
Hallo an alle, ich möchte gerne ein Makro schreiben, welches einen Wert in einer DesignTable bzw. Konfigurationstabelle ändert. Leider bekomme ich beim Ausführen meines Codes den Fehler Funktion oder Variable erwartet und .SetEntryValue ist blau makiert. Der Code
Code:
Sub main() Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swDesignTable As SldWorks.DesignTable Dim cells(1) As String Dim boolstatus As Boolean Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Set swDesignTable = swModel.GetDesignTable swDesignTable.EditTable
Dim instance As IDesignTable Dim Row As Integer Dim Col As Integer Dim IsText As Boolean Dim Retval As String Row = 10 Col = 10 IsText = True Retval = "TestTest" boolstatus = instance.SetEntryValue(Row, Col, IsText, Retval) boolstatus = swDesignTable.UpdateTable(SwConst.swDesignTableUpdateOptions_e.swUpdateDesignTableAll, True) End Sub
Code:
Dim instance As IDesignTable Dim Row As Integer Dim Col As Integer Dim TextIn As String instance.SetEntryText(Row, Col, TextIn)
Das ist der Auszug aus der API Hilfe zum Thema "Sets the text value of the specified entry" Ich hoffe einer kann mir weiterhelfen Vielen Dank Kons92 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur
Beiträge: 3682 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 15. Okt. 2010 18:40 <-- editieren / zitieren --> Unities abgeben: Nur für kons92
|
kons92 Mitglied Konstrukteur
Beiträge: 91 Registriert: 07.12.2009 i920,6GB DDR3,FX3500 SW2011 SP1.0 Win7 64Bit
|
erstellt am: 15. Okt. 2010 19:23 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank Thorsten, ich habe den Code nun geändert, doch leider bekomme ich die gleiche Fehlermeldung wie vorher. Der Code
Code:
Option Explicit Sub main() Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swDesignTable As SldWorks.DesignTable Dim cells(1) As String Dim boolstatus As Boolean Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Set swDesignTable = swModel.GetDesignTable swDesignTable.EditTable
Dim instance As IDesignTable Dim Row As Integer Dim Col As Integer Dim IsText As Boolean Dim Retval As String Dim value As Integer value = instance.GetTotalColumnCount()
Row = 10 Col = 10
IsText = True Retval = "TestTest" boolstatus = instance.SetEntryValue(Row, Col, IsText, Retval) boolstatus = swDesignTable.UpdateTable(SwConst.swDesignTableUpdateOptions_e.swUpdateDesignTableAll, True) End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur
Beiträge: 3682 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 16. Okt. 2010 00:23 <-- editieren / zitieren --> Unities abgeben: Nur für kons92
Ok, noch mal langsam. Der Teil, auf den ich Dich hinweisen wollte, war: Before you use any of the IDesignTable methods, use IDesignTable::Attach to activate the IDesignTable. After you finish getting IDesignTable data, use IDesignTable: etach to deactivate the table. Daher schrieb ich ja: ATTACHEN
also: value = instance.Attach() wobei value nicht integer, sondern boolean deklariert sein sollte. Sicherheitshalber vielleicht mal zur Kontrolle auch: msgbox value hinterherschicken, um zu sehen, ob das attachen auch geklappt hat. Viel Glück, Torsten
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
kons92 Mitglied Konstrukteur
Beiträge: 91 Registriert: 07.12.2009 i920,6GB DDR3,FX3500 SW2011 SP1.0 Win7 64Bit
|
erstellt am: 16. Okt. 2010 09:02 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank Thorsten, ich habe nun Code: boolstatus = instance.SetEntryValue(Row, Col, IsText, Retval) boolstatus = swDesignTable.UpdateTable(SwConst.swDesignTableUpdateOptions_e.swUpdateDesignTableAll, True)
auskommentiert, da sonst die gleiche Fehlermeldung wie zuvor kam und dann gestartet. Dann sagt er Objektvariable oder With-Blockvariable nicht festgelegt.
Code:
swDesignTable.EditTableDim instance As IDesignTable Dim Row As Integer Dim Col As Integer Dim IsText As Boolean Dim Retval As String Dim value As Boolean value = instance.Attach() MsgBox value value = instance.GetTotalColumnCount() Row = 10 Col = 10
IsText = True Retval = "TestTest" 'boolstatus = instance.SetEntryValue(Row, Col, IsText, Retval) 'boolstatus = swDesignTable.UpdateTable(SwConst.swDesignTableUpdateOptions_e.swUpdateDesignTableAll, True) End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
kons92 Mitglied Konstrukteur
Beiträge: 91 Registriert: 07.12.2009 i920,6GB DDR3,FX3500 SW2011 SP1.0 Win7 64Bit
|
erstellt am: 16. Okt. 2010 20:37 <-- editieren / zitieren --> Unities abgeben:
So nun klappt es immerhin schonmal. Ich hoffe es ist so okay würde mich über Antworten freuen. Vielen Dank Thorsten. Code:
Sub main() Dim boolstatus As Boolean Dim swApp As Object Dim swDesignTable As SldWorks.DesignTable Dim Part As ObjectSet swApp = CreateObject("SldWorks.Application") Set Part = swApp.ActiveDoc Set swDesignTable = Part.GetDesignTable swDesignTable.EditTable Set xl = GetObject(, "Excel.Application") Set xlsh = xl.ActiveSheet xlsh.cells(1, 1).value = "x1" boolstatus = swDesignTable.UpdateTable(SwConst.swDesignTableUpdateOptions_e.swUpdateDesignTableAll, True) End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Piet Mitglied Konstruktionsleiter & Konstrukteur
Beiträge: 661 Registriert: 20.11.2001 SWx 2021
|
erstellt am: 21. Aug. 2014 15:13 <-- editieren / zitieren --> Unities abgeben: Nur für kons92
Ist schon eine Weile her, aber mir hat dieser Beitrag trotzdem geholfen. Vielen Dank an alle Beteiligten! Piet
------------------ Jeder nichttrivial gekämmte Igel hat mindestens einen Glatzpunkt. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|