Opzetten met excel in vba

Hallo

Ik heb een Excel-bestand gemaakt dat is gecodeerd in VBA om een assemblage en zijn onderdelen aan te passen. Ik mis een paar dingen om af te maken.

- Welke code te gebruiken om een functie van een onderdeel in een specifieke configuratie van dit onderdeel (standaard of sym) opnieuw te activeren of te deactiveren.

- Ik geef de mogelijkheid om de namen van de onderdelen in mijn Excel-bestand te wijzigen, maar ik kan de koppelingen met mijn nieuwe assemblage niet opnieuw maken, het herstelt de oorspronkelijke naam. Hoe het de nieuwe links met de gewijzigde onderdelen te geven.

Ik voeg de code toe als voorbeeld.

Help me alstublieft.

Vriendelijke groeten.


code_pour_assemblage_parametre.txt

Hallo.

 

Je moet veel plezier hebben gehad met het maken van je kleine programma ^^. Kort

Ik zeg misschien, maar om je naam te redden, zeg je hem dat hij in de cel "D3" moet gaan kijken ... Maar je vertelt hem niet welk dossier/blad ook. Als het blad op dat moment niet actief is, weet hij dus niet waar hij moet zoeken.

 

Ik plak je ook de Sldw helpen voor de Saveas3

 

IModelDoc2
Dim NewName As String
Dim SaveAsVersion As Integer
Dim Options As Integer
Dim value As Integer (ton "chemin_enr" que tu as déclaré "as long")
 
value = instance.SaveAs3(NewName, SaveAsVersion, Options)

 Dus voor jou zou het kunnen zijn

IModelDoc2
Dim NewName As String
Dim SaveAsVersion As Integer
Dim Options As Integer

Newname = Z:\MACHINE\CONFO\" & Blad3.Cellen(3, "D"). Waarde2 & ".sldprt"

(In het geval dat uw doos blad 3 is. Ik ben er niet van overtuigd dat je aan het einde .sldprt moet toevoegen. Te testen)

chemin_enr = swModel.Saveas3(Nieuwe naam, 0, 2)

 

Dankzij de Coin37coin-pijp, maar mijn functie Opslaan als onderdelen werkt prima, het is alleen wanneer ik de assemblage open, het kent de nieuwe onderdelenpaden niet en opent daarom de originele bestanden.

Misschien moet ik de assemblage openen voordat ik mijn onderdelen aanpas en ze opslaan?

 

Vriendelijke groeten.

Haaa, sorry dat ik het verkeerd begrepen heb.

 

Als het veel onderdelen bespaart, moet u inderdaad uw macro vragen om de assemblage te openen voordat u het onderdeel opslaat en vervolgens de assemblage aan het einde op te slaan (vergeet deze stap niet ;) )

 

In feite zal het zich gedragen alsof u het zelf doet: wanneer uw assemblage open is en u een onderdeel opslaat, wordt het nieuwe pad in het geheel opgeslagen. (het beroemde vak "kopie opslaan" om aan te vinken wanneer u het niet wilt doen)

Anders moet u voor configuraties de code "getconfigurationname" proberen die de lijst met configuraties van uw kamer geeft. 

Maak vervolgens een drop-down menu om de juiste configuratie te kunnen kiezen. Dan zou de "openmodelconfiguratie" u in staat moeten stellen om te openen met de gekozen configuratie

En een beetje "getactiveconfiguration" aan het begin van het programma zou u in staat moeten stellen de huidige te selecteren en erop terug te komen wanneer u de kamer sluit

 

Maar dit zijn slechts aannames, ik heb deze codes nooit getest

Ik heb de oplossing gevonden:

-Voor de configuraties:

boolstatus = Part.Extension.SelectByID2("défaut@Embase confo ORIGIN. SLDPRT", "CONFIGURATIES", 0, 0, 0, Onwaar, 0, Niets, 0)
        boolstatus = Part.ShowConfiguration2("standaard")
        boolstatus = Part.Extension.SelectByID2("CongĂ©2@Embase confo ORIGIN-1@confo ORIGIN", "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0)
        Part.EditSuppress2  om een functie in een dergelijke configuratie van het onderdeel in te schakelen
        Deel.ClearSelection2 Waar

- Voor inschrijving:

Set swModel = swApp.OpenDoc6("Z:\MACHINE\CONFO\0 confo ORIGINE 3D\confo ORIGINE.sldasm", 2, 0, "", longstatus, longwarnings)    
    Deel instellen = swApp.ActiveDoc
    
    Deel.ClearSelection2 Waar
    boolstatus = Part.Extension.SelectByID2("Comfortabele header ORIGIN-1@confo ORIGIN", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
    boolstatus = swModel.ReplaceComponents("Z:\MACHINE\CONFO\" & Bereik("d1"). Value2 & " embase.sldprt", "", True, True)
    Deel.ClearSelection2 Waar
    boolstatus = Part.Extension.SelectByID2("Confo wing ORIGIN-1@confo ORIGIN", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
    boolstatus = swModel.ReplaceComponents("Z:\MACHINE\CONFO\" & Bereik("d1"). Waarde2 & " wing.sldprt", "", True, True)
    Deel.ClearSelection2 Waar
    boolstatus = Part.Extension.SelectByID2("Gangpad confo ORIGIN-1@confo ORIGIN", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
    boolstatus = swModel.ReplaceComponents("Z:\MACHINE\CONFO\" & Bereik("d1"). Waarde2 & " corridor.sldprt", "", True, True)
    Deel.ClearSelection2 Waar
    boolstatus = Part.Extension.SelectByID2("Confo sym corridor ORIGIN-1@confo ORIGIN", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
    boolstatus = swModel.ReplaceComponents("Z:\MACHINE\CONFO\" & Bereik("d1"). Waarde2 & " SYM.sldprt Gang", "", True, True)
    Deel.ClearSelection2 Waar
    boolstatus = Part.Extension.SelectByID2("Versterking comfortabel ORIGIN-1@confo ORIGIN", "COMPONENT", 0, 0, 0, False, 0, Niets, 0)
    boolstatus = swModel.ReplaceComponents("Z:\MACHINE\CONFO\" & Bereik("d1"). Waarde2 & " versterking embase.sldprt", "", True, True)
    Deel.ClearSelection2 Waar
    boolstatus = Part.Extension.SelectByID2("Reinforcement conffunction sym ORIGIN-1@confo ORIGIN", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
    boolstatus = swModel.ReplaceComponents("Z:\MACHINE\CONFO\" & Bereik("d1"). Waarde2 & " SYM.sldprt header versterking", "", True, True)
    Deel.ClearSelection2 Waar
    
    chemin_enr = swModel.Saveas3("Z:\MACHINE\CONFO\" & Bereik("d1"). Waarde2 & ".sldasm", 0, 2)
    swApp.CloseDoc (swModel.GetTitle)
    Stel swModel = swApp.OpenDoc6("Z:\MACHINE\CONFO\" & Bereik("d1") in. Value2 & ".sldasm", 2, 0, "", longstatus, longwarnings)
    Deel instellen = swApp.ActiveDoc

 

Groetjes

2 likes

Hallo, Heeft u een voorbeeld op Excel (Macro) + bestand om een functie van een onderdeel te activeren of te deactiveren?

Hallo

Ik raad je aan om een vraag opnieuw te maken, want deze is meer dan twee jaar oud.