Hello,
I'm trying to extract some Part properties to a TXT file to pass them onto another software (some are additional properties ad-hoc created).
When I try to access them via VBA I get always the same error
ByRef argument type incompatible
Does anybody have a clue?
I attached the macro for reference, in BOLD where I usually get the error.
Thanks!
Option Explicit Sub main() ' Connect to SolidWorks using late binding for the Custom Property Manager. Dim swApp As Object Set swApp = Application.SldWorks ' Get the active document (part, assembly, or drawing) Dim swModel As Object Set swModel = swApp.ActiveDoc If swModel Is Nothing Then MsgBox "No active document open. Please open a part, assembly, or drawing and try again.", _ vbExclamation, "Error" Exit Sub End If ' Get the active configuration name (since these are configuration properties). Dim configName As String configName = swModel.ConfigurationManager.ActiveConfiguration.Name ' Obtain the Custom Property Manager for the active configuration using late binding. Dim cusPropMgr As Object Set cusPropMgr = swModel.Extension.CustomPropertyManager(configName) ' Define the list of property names to extract. Dim propNames As Variant propNames = Array("ArtikelNr", "Description_DE", "Description_EN", "Typ", _ "Material", "AC-Code", "DWG", "Gewicht") ' Build the output string with semicolons as delimiters. Dim outputStr As String outputStr = "" Dim i As Integer Dim currentPropName As String Dim tempVal As String Dim retVal As Long ' Declare useCached as a Variant and set it to False. ' (Late binding should bypass the compile-time type check.) Dim useCached As Variant useCached = False For i = LBound(propNames) To UBound(propNames) currentPropName = propNames(i) tempVal = "" ' Call Get2. With late binding, the parameter type check is deferred. retVal = cusPropMgr.Get2(currentPropName, useCached, tempVal) ' If the property is empty or not found, substitute a single space. If Trim(tempVal) = "" Then tempVal = " " End If outputStr = outputStr & tempVal & ";" Next i ' Define the file path for the text output. Dim filePath As String filePath = "C:\temp\sw_custom_props.txt" ' Write the output string to the file. Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") Dim txtFile As Object Set txtFile = fso.CreateTextFile(filePath, True) txtFile.WriteLine outputStr txtFile.Close MsgBox "Properties exported successfully to:" & vbCrLf & filePath, vbInformation, "Export Complete" End Sub