Dateierweiterung "Wert wiederherstellen"

 Hallo an alle.
Ich habe ein kleines Level in VBA. Ich habe einen Code erhalten , den ich gemäß Ihrem Rat in diesem Forum geändert habe.
Ausgehend von einer Baugruppe können Sie die Stückliste in ein Blatt exportieren .xls
Es funktioniert perfekt, aber ich möchte die Möglichkeit hinzufügen, die Erweiterung der Dateien in der Spalte J abzurufen . 
Die Variable, mit der Sie die Erweiterung abrufen können, lautet wie folgt: Right(docfilename , 6)
 Wie integriere ich diese Variable in mein Programm?

 

Sub main()

Dim xlApp As Excel.Application
Legen Sie xlApp = Neue Excel.Anwendung fest
Dim wbk As Excel.Workbook
Dim sht As Excel.Arbeitsblatt

Mit xlApp
    . Sichtbar = Wahr
    Legen Sie wbk = fest. Arbeitsmappen.Hinzufügen
    Setze sht = wbk. ActiveSheet (Englisch)
Enden mit

Dim swApp                   als SldWorks.SldWorks
Dim swModel                 As SldWorks.ModelDoc2
Dim swModelDocExt           As SldWorks.ModelDocExtension
Dim swBOMAnnotation         As SldWorks.BomTableAnnotation
Dim swBOMFeature            As SldWorks.BomFeature
Dim boolstatus              als boolescher Wert
BomType                 so lange dimmen
Konfiguration           als Zeichenfolge dimmen
Dim TemplateName            als Zeichenfolge

Legen Sie swApp = Application.SldWorks fest
Festlegen von swModel = swApp.ActiveDoc
Legen Sie swModelDocExt = swModel.Extension fest

TemplateName = "M:\DATENBANK\TEMPLATES\05-Modell der Nomenklatur\GP_ASM_Nomenclature BOS.sldbomtbt"
Stücklistentyp = swBomType_Indented
Konfiguration = swApp.GetActiveConfigurationName(swModel.GetPathName)
MsgBox-Konfiguration
Set swBOMAnnotation = swModelDocExt.InsertBomTable3(Vorlagenname, 0, 0, BomType, Configuration, False, swNumberingType_Detailed, True)
Set swBOMFeature = swBOMAnnotation.BomFeature

swModel.ForceRebuild3 Wahr

NumCol so lange dimmen
Dim NumRow so lange
Dimmen Sie so lange
Sun J So Lang

NumCol = swBOMAnnotation.ColumnCount
AnzahlZeile = swBOMAnnotation.ZeilenAnzahl

Für I = 0 bis NumRow
    Für J = 0 TB NumCol
        Sht. Zellen (I + 1, J + 1). Wert = swBOMAnnotation.Text(I, J)
    Weiter J
Weiter I

boolstatus = swModelDocExt.SelectByID2(swBOMFeature.GetFeature.Description, "BOMFEATURE", 0, 0, 0, Wahr, 0, Nichts, 0)
swModel.EditDelete

Pfad als Zeichenfolge dimmen
Pfad = "C:\temp\BOS.xlsx"

Mit xlApp
    WBK. Pfad "Speichern unter"
    WBK. Schließen
    . Verlassen
Enden mit

Ende Sub

Hallo

Mit der folgenden API-Hilfe sollte der Codeausschnitt angezeigt werden: http://help.solidworks.com/2019/english/api/sldworksapi/Get_Components_in_Each_BOM_Table_Row_VB.htm

 

 

Wenn ich das richtig verstehe, erstellt Ihr Programm eine Nomenklatur und durchläuft sie dann, um den Inhalt abzurufen.

Sie sollten einen Screenshot Ihrer Nomenklatur (der Liste der Spalten) haben.

Persönlich füge ich eine Spalte in der Stückliste hinzu, in der der vollständige Name der Datei abgerufen wird.
Wir haben dann 2 Möglichkeiten:
- Behandeln Sie die Zelle mit VBA;
- Verwenden Sie XL-Funktionen.

In VBA führen Sie eine zweite Schleife mit etwas wie diesem aus:
Sht. Zellen(I + 1, colonne_nom_fichier). Wert = Rechts( sht. Zellen(I + 1, colonne_nom_fichier). Wert, 6)

Die Idee, eine Spalte in der Stückliste hinzuzufügen, die den vollständigen Namen der Datei abruft, ist gut.

Leider bietet SolidWorks nicht die Möglichkeit, den Dateinamen und die Dateierweiterung abzurufen .

Da es möglich ist, mit der rechten Maustaste die Datei einer Zeile der Stückliste zu öffnen, können Sie vielleicht auf diese Weise den Namen abrufen (indem Sie eine Öffnung simulieren)?

Das Bild ist nicht lesbar (das ist das Problem mit diesem Forum), es muss angehängt werden.

Pcs


capture.jpg

Hallo

Der Link, den ich gesetzt habe, ermöglicht es Ihnen, die Stückliste zu schleifen, um den vollständigen Pfad (mit Erweiterung) abzurufen.

Cyril. Vielen Dank für die Links. Ich kann dieses Programm nicht starten, es wird eine Fehlermeldung in die 7. Zeile eingefügt.

Wie haben Sie es geschafft, es zu testen? Ich glaube, ich habe keinen Fehler gemacht, aber ich kann nicht herausfinden, was :/ 

Hallo

Ich habe gerade einen Plan mit einer Nomenklatur vorgelegt. Wo pflanzt sie? (7. Zeile, ich bin mir nicht sicher, ob ich die richtige habe)

In meinem Fall passiert nichts :O

Können Sie einen Screenshot der erzielten Ergebnisse machen?

 

-----------------------------------

Voraussetzungen:
" (1) Öffnen Sie public_documents \samples\tutorial\assemblyvisual\food_processor.sldasm.
'2. Erstellen Sie eine Zeichnung aus der Baugruppe.
"(3) Wählen Sie Einfügen> Tabellen> Stückliste .
"(4) Stellen Sie sicher, dass die Option Teile nur in Stücklistentyp ausgewählt ist.
"(5) Stellen Sie sicher, dass die Option Konfigurationen im selben Raum als separate Elemente anzeigen
" in der Teilekonfigurationsgruppierung ausgewählt ist.
"(6)  Klicken Sie auf OK .
'7. Klicken Sie auf eine beliebige Stelle in der Zeichnung, um die Stücklistentabelle einzufügen.
'
' Postbedingungen:
"(1)Funktionalität der Stückliste1 .
"(2) Ruft die Standardkonfiguration ab. 
"(3) Verarbeitet die Stücklistentabelle für die Standardkonfiguration . 
'4. Untersuchen Sie das Fenster Ausführung.
'
' HINWEIS : Da die Vorlage an anderer Stelle verwendet wird, speichern Sie die Änderungen nicht

Hallo

Im Anhang finden Sie einen Screenshot.


macro_sw_get_coponent_in_bom.jpg

Vielen Dank. Das Ergebnis befindet sich im Ausführungsteil. Wie geht das, gehen Sie zum xls-Blatt?

Hallo

Nachfolgend sehen Sie die Integration der Beispiel-API. Ich habe nicht überprüft, ob die Variable docfilename leer ist .

Dim vPtArr As Variant
Dim swComp As Object
Dim pt As Object
Dim compPath As String
Dim docfilename As String

Sub main()

Dim xlApp As Excel.Application
Set xlApp = New Excel.Application
Dim wbk As Excel.Workbook
Dim sht As Excel.Worksheet

With xlApp
    .Visible = True
    Set wbk = .Workbooks.Add
    Set sht = wbk.ActiveSheet
End With

Dim swApp                   As SldWorks.SldWorks
Dim swModel                 As SldWorks.ModelDoc2
Dim swModelDocExt           As SldWorks.ModelDocExtension
Dim swBOMAnnotation         As SldWorks.BomTableAnnotation
Dim swBOMFeature            As SldWorks.BomFeature
Dim boolstatus              As Boolean
Dim BomType                 As Long
Dim Configuration           As String
Dim TemplateName            As String

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swModelDocExt = swModel.Extension

TemplateName = "M:\DATABASE\MODELES\05-Model de nomenclature\GP_ASM_Nomenclature BOS.sldbomtbt"
BomType = swBomType_Indented
Configuration = swApp.GetActiveConfigurationName(swModel.GetPathName)
MsgBox Configuration
Set swBOMAnnotation = swModelDocExt.InsertBomTable3(TemplateName, 0, 0, BomType, Configuration, False, swNumberingType_Detailed, True)
Set swBOMFeature = swBOMAnnotation.BomFeature

swModel.ForceRebuild3 True

Dim NumCol As Long
Dim NumRow As Long
Dim I As Long
Dim J As Long

NumCol = swBOMAnnotation.ColumnCount
NumRow = swBOMAnnotation.RowCount

For I = 0 To NumRow
    vPtArr = swBOMAnnotation.GetComponents2(I, Configuration)
    If (Not IsEmpty(vPtArr)) Then
        For K = 0 To UBound(vPtArr)
            Set pt = vPtArr(K)
            Set swComp = pt
            If Not swComp Is Nothing Then
                docfilename = swComp.GetPathName
            End If
        Next K
    End If
    For J = 0 To NumCol
        sht.Cells(I + 1, J + 1).Value = swBOMAnnotation.Text(I, J)
    Next J
    If I > 0 Then
        sht.Cells(I + 1, J).Value = Right(docfilename, 6)
    End If
Next I

boolstatus = swModelDocExt.SelectByID2(swBOMFeature.GetFeature.Description, "BOMFEATURE", 0, 0, 0, True, 0, Nothing, 0)
swModel.EditDelete

Dim chemin As String
chemin = "C:\temp\BOS.xlsx"

With xlApp
    wbk.SaveAs chemin
    wbk.Close
    .Quit
End With

End Sub

 

3 „Gefällt mir“

Danke für den Code:)

Ich habe nur ein kleines Problem mit Li13, Col 1 Kompilierungsfehler

Sie sollten einen Screenshot der Fehlermeldung machen, da Li13,Col1 für mich eine leere Zeile ist.

Erratum :) Li 8, Col 1


capture.jpg

Dies ist nicht die Zeile, in der das Problem liegt, sondern die Zeile, in der sich der Cursor befindet.

Also sage ich, dass Dim K so lange fehlt

Andernfalls schauen Sie in den Referenzen (Tools > Referenzen) nach und es sollte wie der Screenshot aussehen, der an die Versionsnummer angehängt ist.


references_vba.jpg
1 „Gefällt mir“

Cyril.f Bravo und danke:D

Dies kam tatsächlich von der Option: Microsoft Excel 16.0 Objektbibliothek