Hallo zusammen,
Ich stehe noch ganz am Anfang der Makroprogrammierung. Ich will mir aktuell ein Makro erstellen, welches eine Input-Box aufruft wo dann der SAP-Benutzer und die Teilenummer eingegeben werden kann, die dann den String für den Speicherpfad ergeben.
Da der Speicherpfad immer der Selbe ist, wird dieser dann durch die Variablen SAP-Benutzer und Teilenummer nur ergänzt, sodass er komplett ist.
Allerdings habe ich das Problem, dass ich immer einen Fehler im boolstatus in der letzten Zeile bekomme und die Komponente aktuell nicht eingefügt werden kann.
Wenn ich die Speicherpfade allerdings händisch eingebe, kommt dieser Fehler nicht. Kann mir jemand erklären, warum ich den String für den Speicherpfad nicht so zusammensetzen kann, bzw. wie es mir gelingt eine Komponente mit einem solchen "zusammengesetzten" Speicherpfad einzufügen?
Anbei mein Code:
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swAssembly As SldWorks.AssemblyDoc
Dim AssemblyTitle As String
Dim tmpObj As SldWorks.ModelDoc2
Dim swInsertedComponent As SldWorks.Component2
Dim errors As Long
Dim Part As SldWorks.ModelDoc2
Dim TransformData(15) As Double
Dim TransformDataVariant As Variant
Dim swMathUtil As Object
Dim swTransform As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim DateiPfad As String
Dim SAPbenutzer As String
SAPbenutzer = InputBox("Den SAP-Benutzernamen bitte eingeben")
Dim Teilenummer As String
Teilenummer = InputBox("Die Teilenummer bitte eingeben")
DateiPfad = "c:\users\" & SAPbenutzer & "\ectr\m46_001_" & SAPbenutzer & "\sess\" & SAPbenutzer & "\" & Teilenummer & "swa000.SLDASM"
'swApp.SendMsgToUser2 DateiPfad, swMessageBoxIcon_e.swMbInformation, swMessageBoxBtn_e.swMbOk
Set swApp = Application.SldWorks
Set Part = swApp.OpenDoc6("-Platzhalter für Dateipfad der Uebergeordneten Baugruppe-", 2, 0, "", longstatus, longwarnings)
Set swAssembly = Part
swApp.ActivateDoc2 "assem2.sldasm", False, longstatus
Set Part = swApp.ActiveDoc
AssemblyTitle = Part.GetTitle
Set tmpObj = swApp.OpenDoc6(DateiPfad, 1, 32, "", errors, longwarnings)
Set Part = swApp.ActivateDoc3(AssemblyTitle, True, 0, errors)
Set swInsertedComponent = Part.AddComponent5(DateiPfad, 0, "", False, "", 0.29642267129384, 9.20506109250709E-02, -0.187506963149644)
swApp.CloseDoc (DateiPfad)
TransformData(0) = 1
TransformData(1) = 0
TransformData(2) = 0
TransformData(3) = 0
TransformData(4) = 1
TransformData(5) = 0
TransformData(6) = 0
TransformData(7) = 0
TransformData(8) = 1
TransformData(9) = 0.29642267129384
TransformData(10) = 9.20506109250709E-02
TransformData(11) = -0.187506963149644
TransformData(12) = 1
TransformData(13) = 0
TransformData(14) = 0
TransformData(15) = 0
TransformDataVariant = TransformData
Set swMathUtil = swApp.GetMathUtility()
Set swTransform = swMathUtil.CreateTransform((TransformDataVariant))
boolstatus = swInsertedComponent.SetTransformAndSolve2(swTransform)
End Sub
Wie gesagt meine VBA Kenntnisse sind leider noch rudimentär, ich würde mich trotzdem freuen wenn sich jemand findet, der mir weiterhelfen kann
Viele Grüße,
Quint
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP