Ich habe jetzt diesen Fehler!
Sub main()
xlApp als Objekt dimmen
Dim wbk As Object 'not Workbook
Dim sht As Object 'not Worksheet
'falls erforderlich: Dim rng As Object ‹ nicht Range ›
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
Wenn swModel nichts ist, dann
swApp.SendMsgToUser2 (' Keine aktive Assembly erkannt. '), swMbWarning, swMbOk' Aktivität des Testdokuments
Sub beenden
ElseIf swModel.GetType <> swDocASSEMBLY dann
swApp.SendMsgToUser2 (' Keine aktive Assembly erkannt. '), swMbWarning, swMbOk' testet, ob es sich bei der Datei um eine Assembly handelt
Sub beenden
ElseIf swModel.GetPathName = " " dann
swApp.SendMsgToUser2 ( 'Nicht registrierte Assembly. '), swMbWarning, swMbOk' testen, ob die Assembly registriert ist
Sub beenden
Ende, wenn
Legen Sie swModelDocExt = swModel.Extension fest
Set xlApp = CreateObject(" Excel.Anwendung ")
Set wbk = xlApp.Workbooks.Open(" ... Nomenclature.xls") ' Öffnen der Vorlage ‹ oder Erstellen einer neuen: Set wbk = xlApp.Workbooks.Add
‹ bei Bedarf: Vorhandene Blattauswahl: Setze sht = wbk. Arbeitsblätter(1) ›: eine Tabelle hinzugefügtSet wks = wbk. Blätter.Hinzufügen ›
‹ falls nötig: Zelle auswählen: Set rng = thisWs.Range(" A11 ") ›
Vorlagenname = " ... Detailed.sldbomtbt » ‹ Erstellen der automatischen Stückliste von Solidworks nach Modell ›
Stücklistentyp = swBomType_Indented
Configuration = " Standard" ‹ Name der eingestellten Konfiguration ›
Set swBOMAnnotation = swModelDocExt.InsertBomTable3(Vorlagenname, 0, 0, BomType, Configuration, False, swNumberingType_Detailed, False)
Set swBOMFeature = swBOMAnnotation.BomFeature
swModel.ForceRebuild3 Wahr
NumCol so lange dimmen
Dim NumRow so lange
Sonne i So lang
Sun J So Lang
NumCol = swBOMAnnotation.ColumnCount
AnzahlZeile = swBOMAnnotation.ZeilenAnzahl
Dunkle Zeile So lang
Zeile = 0
Für i = 0 bis NumRow
Dim itemNum As String, partnum As String
swBOMAnnotation.GetComponentsCount2 i + 1, "", itemNum, partnum
If isValidPart2(partnum) = False Then GoTo next_i
For J = 0 To NumCol
wbk.Sheets("Nomenclature").Cells(row + 9, J + 1) = swBOMAnnotation.Text(i + 1, J)
Next J
row = row + 1
next_i:
Weiter i
boolstatus = swModelDocExt.SelectByID2(swBOMFeature.GetFeature.Description, " BOMFEATURE ", 0, 0, 0, Wahr, 0, Nichts, 0)
swModel.EditDelete
swModel.ForceRebuild3 Wahr
Dim-Konfiguration als SldWorks.Configuration
Dim cusPropMgr As SldWorks.CustomPropertyManager
Dim lRetVal so lange
ValOut als String dimmen
Dim ResolvedValOut als Zeichenfolge
Dim wasResolved As Boolean
Dim nNbrProps so lange
Dim vPropNames als Variante
Dim vPropTypes als Variante
Dim vPropValues als Variante
Dimmen aufgelöst als Variante
Dim custPropType So lange
Dim K so lange
Dim PropertyName1 als Zeichenfolge
Dim PropertyName2 als Zeichenfolge
Dim PropertyName3 als Zeichenfolge
Dim PropertyName4 als Zeichenfolge
Dim PropertyName5 als Zeichenfolge
Dim PropertyName6 als Zeichenfolge
Dim PropertyName7 als Zeichenfolge
Dim DateStr As Date
Set config = swModel.GetActiveConfiguration ': verweist auf die Solidworks-Eigenschaften des aktuellen Dokuments
‹ Legen Sie cusPropMgr = config fest. CustomPropertyManager ›: Abrufen konfigurationsspezifischer Eigenschaften (Solidworks >-Eigenschaften> konfigurationsspezifische Eigenschaften.
Set cusPropMgr = swModelDocExt.CustomPropertyManager(" ")
nNbrProps = cusPropMgr.Anzahl
vPropNames = cusPropMgr.GetNames
Für K = 0 bis nNbrProps - 1
cusPropMgr.Get2 vPropNames(K), ValOut, ResolvedValOut
custPropType = cusPropMgr.GetType2(vPropNames(K))
If vPropNames(K) = "N° de projet" Then 'récupération de la propriété "N° de projet"'
NomProperty1 = ResolvedValOut
wbk.Sheets("Nomenclature").Cells(1, 3) = NomProperty1
End If
If vPropNames(K) = "N° Plan / Réf / Dim" Then
NomProperty2 = ResolvedValOut
wbk.Sheets("Nomenclature").Cells(1, 5) = "-" & NomProperty2
End If
If vPropNames(K) = "Nom de projet" Then
NomProperty3 = ResolvedValOut
wbk.Sheets("Nomenclature").Cells(3, 3) = NomProperty3
End If
If vPropNames(K) = "Désignation" Then
NomProperty4 = ResolvedValOut
wbk.Sheets("Nomenclature").Cells(5, 3) = NomProperty4
End If
If vPropNames(K) = "Dessinateur" Then
NomProperty5 = ResolvedValOut
wbk.Sheets("Nomenclature").Cells(2, 7) = " Dessinateur : " & NomProperty5
End If
If vPropNames(K) = "Vérificateur" Then
NomProperty6 = ResolvedValOut
wbk.Sheets("Nomenclature").Cells(3, 7) = " Vérificateur : " & NomProperty6
End If
If vPropNames(K) = "Indice en cours" Then
NomProperty7 = ResolvedValOut
wbk.Sheets("Nomenclature").Cells(4, 7) = " Indice en cours : " & NomProperty7
End If
Weiter K
WBK. Sheets(" Nomenklatur "). cells(1, 6) = " Datum: " & DateValue(Jetzt)
Pfad als Zeichenfolge dimmen
path = Strings.Left(swModel.GetPathName, Len(swModel.GetPathName) - 7) & " - " & PropertyName7 & " -Detailed " & " .xlsx " ' Geben Sie den Pfad und den Datensatznamen ein ' & PropertyName: Dem Dateinamen wurde eine benutzerdefinierte Eigenschaft hinzugefügt.
Mit xlApp
.DisplayAlerts = False
.EnableEvents = False
wbk.SaveAs chemin 'enregistre le fichier et écrase si fichier déjà existant
.DisplayAlerts = True
.EnableEvents = True
wbk.Close 'ferme le workbook
.Quit 'quitte excel
Enden mit
swApp.SendMsgToUser2 (" Stückliste der gesamten erstellten Maschine. "), swMbInformation, swMbOk 'msgbox solidworks
Ende Sub
Funktion isValidPart2(str As String) Als Boolean
isValidPart2 = False
If str = "" Then Exit Function
Dim i As Long
For i = 1 To Len(str)
If Mid(str, i, 1) <> " " Then
isValidPart2 = True
Exit Function
End If
Next i
Ende-Funktion