Om een tabel weer te geven zoals ik wil op een tekening, moet ik het Excel-bestand opmaken waar het zich bevindt. Dit gaat door het verbergen en in sommige gevallen het tonen van kolommen/rijen en ik zou het graag automatisch doen, dus via macro, maar ik kan het niet.
Ik heb een macro opgenomen in Excel om te zien hoe het eruit kan zien: Sub Cacher_ligne_colonne() ' 'Macro om de rijen en kolommen te verbergen die ik wil Kolommen ("B:E"). Selecteren Selectie.GeheleKolom.Verborgen = Waar Kolommen ("I:K"). Selecteren Selectie.GeheleKolom.Verborgen = Waar Rijen ("35:36"). Selecteren Bereik ("A36"). Activeren Selectie.GeheleRij.Verborgen = Waar Rijen ("2:8"). Selecteren Bereik ("A8"). Activeren Selectie.GeheleRij.Verborgen = Waar Einde Sub
Maar ik denk dat het onder SW niet hetzelfde is, misschien moet je gewoon ergens xlSW toevoegen? En door de manipulatie onder SW op te slaan, registreert het alleen de beweging van het venster, niet de "maskerende" actie:
Dim swApp als object
Deel dimmen als object Dim boolstatus als Booleaanse Dim longstatus As Long, longwarnings As Long
Sub hoofd()
Stel swApp in = _ Toepassing.SldWorks
Deel instellen = swApp.ActiveDoc boolstatus = Part.Extension.SelectByID2("Onderdelen Familie", "DESIGNTABLE", 0, 0, 0, False, 0, Nothing, 0) Deel.InsertFamilyTableEdit myModelView dimmen als object Stel myModelView = Deel.ActiveView in myModelView.FrameState = swWindowState_e.swWindowMaximized Stel myModelView = Deel.ActiveView in myModelView.FrameState = swWindowState_e.swWindowMaximized Stel myModelView = Deel.ActiveView in myModelView.FrameState = swWindowState_e.swWindowMaximized Stel myModelView = Deel.ActiveView in myModelView.FrameState = swWindowState_e.swWindowMaximized Stel myModelView = Deel.ActiveView in myModelView.FrameState = swWindowState_e.swWindowMaximized Stel myModelView = Deel.ActiveView in myModelView.FrameState = swWindowState_e.swWindowMaximized Stel myModelView = Deel.ActiveView in myModelView.FrameState = swWindowState_e.swWindowMaximized Stel myModelView = Deel.ActiveView in myModelView.FrameState = swWindowState_e.swWindowMaximized Stel myModelView = Deel.ActiveView in myModelView.FrameState = swWindowState_e.swWindowMaximized Deel.ClearSelection2 Waar Deel.CloseFamilyTable Einde Sub
Ik denk dat je je tafel al moet openen met deze methode: http://help.solidworks.com/2016/english/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.IModelDoc2~InsertFamilyTableEdit.html
Vervolgens maak je een Excel-macro en roep je deze aan vanuit SW.
Dank u voor uw antwoord, inderdaad ben ik al het openen van mijn kamer familie. Ik heb al een goed ontwikkelde code om configuraties te kiezen via een SW-formulier, dus ik gebruik al dit soort syntaxis.
Omdat ik vrij nieuw was in het programmeren van Vba, wist ik niet dat het mogelijk was om Excel-macro* aan te roepen vanuit SW. Het idee zou zijn om een macro te maken die in Excel is geschreven, maar vanuit SW te bellen of het zou de hele tijd draaien? Heeft u een voorbeeld van het code-aanroepen van een Excel-functie vanuit SW stp?
Ik kom terug op dit onderwerp omdat ik wat onderzoek heb gedaan, maar ik zit weer vast. Ik heb een code geschreven die werkt in Excel om alle rijen en kolommen in een tabel weer te geven:
Dim ShowAllLines As Integer
Dim ShowAllColumns As Integer
ShowAllLines = Columns(1).Find("", after:=[A1]).Row
Range("A1:A" & ShowAllLines).Select
Selection.EntireRow.Hidden = False
ShowAllColumns = Rows(1).Find("", after:=[A1]).Column
Range("A1:" & Chr(64 + ShowAllColumns) & "1").Select
Selection.EntireColumn.Hidden = False
Dit werkt heel goed vanuit de Vba module van Excel maar zodra ik overstap naar SW heb ik een foutmelding van de eerste regel:
Dim ShowAllLines As Integer
Dim ShowAllColumns As Integer
ShowAllLines = xlWS.Columns(1).Find("", after:=[A1]).Row
xlWS.Range("A1:A" & ShowAllLines).Select
Selection.EntireRow.Hidden = False
ShowAllColumns = xlWS.Rows(1).Find("", after:=[A1]).Column
xlWS.Range("A1:" & Chr(64 + ShowAllColumns) & "1").Select
Selection.EntireColumn.Hidden = False
Ik denk dat het in de syntaxis van de functie "Zoeken" zit dat het vastloopt, maar ik heb geen hulp gevonden die al bestaat, daarom neem ik de vrijheid om hier te posten.
Ik moest mijn code inkorten omdat de rest in aanbouw was, dus hoogstwaarschijnlijk onbegrijpelijk voor je en ik veranderde het aantal van 2-3 variabelen.
Ik begrijp niet echt wat je bedoelt, want voor mij krijg ik al het actieve blad en het werkboek omdat ik erin schrijf. Sterker nog, dankzij mijn macro open ik het 3D-bestand, open ik de bijbehorende familie, schrijf ik de keuze van de gebruiker in een cel, sluit ik de familie, werk ik de familie bij, bouw ik opnieuw op en daar wordt mijn configuratie geactiveerd.
En hierin zou ik kolommen willen verbergen/tonen volgens de keuze van de gebruiker.