Bearbeiten eines Stücklistenmakros

Hallo

Ich interessiere mich für dieses Makro , mit dem Sie mit einem Klick eine Excel-Stückliste aus einer Baugruppe erstellen können, aber ich möchte es so ändern, dass es eine Excel-Vorlage verwendet, in der ich einige Dinge eingerichtet habe (Makro, mit dem Sie die Eigenschaften in der SW ändern können, Liste der Dropdown-Optionen)

Hier ist der Code für das ursprüngliche Makro:

Option Explicit

Dim swApp                   As SldWorks.SldWorks
Dim swModel                 As SldWorks.AssemblyDoc
Dim swModelDocExt           As SldWorks.ModelDocExtension
Dim swBOMAnnotation         As SldWorks.BomTableAnnotation
Dim swBOMFeature            As SldWorks.BomFeature
Dim BomType                 As Long
Dim Configuration           As String
Dim TemplateName            As String
Dim swConfig                As SldWorks.Configuration
Dim xlApp                   As Excel.Application
Dim wbk                     As Excel.Workbook
Dim sht                     As Excel.Worksheet
Dim NumCol                  As Long
Dim NumRow                  As Long
Dim I                       As Long
Dim J                       As Long
Dim chemin                  As String

Sub xls()
    ' On ouvre un nouvel objet Excel
    Set xlApp = New Excel.Application
    
    ' On rend Excel visible avec un nouveau classeur
    With xlApp
        .Visible = True
        Set wbk = .Workbooks.Add
        Set sht = wbk.ActiveSheet
    End With
    
    ' On se raccroche à l'application SW
    Set swApp = Application.SldWorks

    ' On se raccroche au document SW ouvert
    Set swModel = swApp.ActiveDoc
    Set swModelDocExt = swModel.Extension
    
    ' On définit le modèle de nomenclature
    TemplateName = "Z:\BIBLIO\BIBLIO_LOGICIEL\BIBLIO_SOLIDWORKS\SOLIDWORKS_FORMALISME_CLEO\Modèle de nomenclature\9999_Nomenclature_SW.sldbomtbt"
    BomType = swBomType_Indented
    
    ' On récupère la configuration active
    Set swConfig = swModel.GetActiveConfiguration
    Configuration = swConfig.Name
    
    ' On insère la nomenclature dans le 3D
    Set swBOMAnnotation = swModelDocExt.InsertBomTable3(TemplateName, 0, 1, BomType, Configuration, False, swNumberingType_Detailed, True)
    Set swBOMFeature = swBOMAnnotation.BomFeature
    
    ' On reconstruit le 3D
    swModel.ForceRebuild3 True
    
    ' On remplit les cellules de Excel à partir des valeurs de la nomenclature
    NumCol = swBOMAnnotation.ColumnCount
    NumRow = swBOMAnnotation.RowCount
    For I = 0 To NumRow
        For J = 0 To NumCol
            sht.Cells(I + 1, J + 1).Value = swBOMAnnotation.Text(I, J)
        Next J
    Next I
    
    ' On définit le nom complet du fichier Excel
    chemin = Environ("USERPROFILE") & "\Desktop\" & "export" & ".xls"
    
    ' On sauvegarde le fichier Excel puis on ferme Excel
    With xlApp
        wbk.SaveAs chemin
        wbk.Close
        .Quit
    End With
 
End Sub
        


        
      

 

Ich stelle mir vor, dass der zu ändernde Abschnitt wie folgt aussieht:

Dim wbk                     As Excel.Workbook

 

oder

 

' On ouvre un nouvel objet Excel
    Set xlApp = New Excel.Application
    
    ' On rend Excel visible avec un nouveau classeur
    With xlApp
        .Visible = True
        Set wbk = .Workbooks.Add
        Set sht = wbk.ActiveSheet
    End With

 

aber ich weiß nicht, wie ich den Pfad meines XLS-Modells angeben soll

Danke für Ihre Hilfe

 

 

 

 

In einem zweiten Schritt möchte ich auch weitere Änderungen vornehmen, wie z.B.

  1. - Erfassen Sie die Stückliste an derselben Stelle wie die Baugruppe, von der sie abgeleitet ist
  2. - Schreiben Sie die Nomenklatur zweimal: im Reiter Arbeit, aber auch in einem zweiten Reiter, als Backup
  3. - Fügen Sie ein Miniaturbild des Teils vor jeder Zeile hinzu (nur ab 2019 möglich? Ich arbeite gerade in 2018) (Ich werde später eine bestimmte Stelle eröffnen, ich habe bereits eine Codebasis, die ich nicht zum Laufen bringen kann)
  4. Exportieren Sie alle Eigenschaften aller Konfigurationen automatisch (Beitrag zu dieser Frage hier)
  5. - Exportieren Sie in dieser Excel-Tabelle auch die SW-Eigenschaft, die die Heraufstufung von Komponenten im Ausschlussmodus verwaltet... (Ich werde später eine bestimmte Position eröffnen)

Soweit es möglich ist, natürlich...

Vielen Dank im Voraus für Ihre Vorschläge

1 „Gefällt mir“

Hallo

Auf die Frage "Wie gebe ich den Pfad meines xls-Modells an" müssen Sie die Zeile

Legen Sie wbk = fest. Arbeitsmappen.Hinzufügen

bis

Legen Sie wbk = fest. Workbooks.Open("C:\..........\my modèle.xls")

Auf die Frage "Speichern Sie die Stückliste an der gleichen Stelle wie die Baugruppe, aus der sie stammt" müssen wir die Zeile

Pfad = Über("BENUTZERPROFIL") & "\Desktop\" & "Export" & ".xls"

bis

ExcelName als Zeichenfolge dimmen
ExcelName = swModel.GetPathName()
ExcelName = Links(ExcelName, InStrRev(ExcelName, "\"))
Pfad = ExcelName & "Export" & ".xls"

Zu der Frage "Schreibe die Nomenklatur zweimal: im Arbeitsregister, aber auch in einem zweiten Register, als Backup" kannst du zum Beispiel eine Zeile hinzufügen

Dim shtAls Excel.Arbeitsblatt speichern

Nach der Zeile

Dim sht As Excel.Arbeitsblatt

Fügen Sie dann die Zeile hinzu

Legen Sie shtSave = wbk fest. Arbeitsblätter(2)

Nach der Zeile

Setze sht = wbk. ActiveSheet (Englisch)

und fügen Sie schließlich die Zeile hinzu

shtSave.Cells(I + 1, J + 1). Wert = swBOMAnnotation.Text(I, J)

Nach der Zeile

Sht. Zellen (I + 1, J + 1). Wert = swBOMAnnotation.Text(I, J)

Für die Fragen 3, 4 und 5: nachfolgender oder dedizierter Diskussionsthread ...

Herzliche Grüße

 

2 „Gefällt mir“