Hallo
Ich habe nach einem Makro gesucht, um das Äquivalent der Aktion [Alt + TAB] (aktives Dokument ändern) auszuführen, und ich habe diesen Code gefunden:
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim vModels As Variant
Dim count As Integer
Dim opendocs As New Collection
Dim docname As Variant
Dim currentdocTitle As String
Dim title As String
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
currentdocTitle = swModel.GetTitle
vModels = swApp.GetDocuments
For count = LBound(vModels) To UBound(vModels) 'get list of open documents
Set swModel = vModels(count)
If swModel.Visible <> False Then
opendocs.Add (swModel.GetTitle)
End If
Next
count = 0
If opendocs(opendocs.count) = currentdocTitle Then ' if its the last document in the list, switch to the first document
swApp.ActivateDoc2 opendocs(1), False, 0
End
Else ' else find the next document and activate
For count = 1 To opendocs.count
If opendocs(count) = currentdocTitle Then
swApp.ActivateDoc2 opendocs(count + 1), False, 0
End
End If
Next
End If
End Sub
und es funktioniert perfekt, wenn das Makro direkt über SolidWorks gestartet wird.
Mein Problem ist, dass ich ein Tool erstelle, das über Excel gestartet wird und daher alle meine Makros in VBA Excel und nicht in VBA Solidworks schreiben muss.
Wenn ich diesen Code in mein Excel-Makro kopiere / einfüge, erhalte ich folgende Fehlermeldung:
run-time error '438'
Object doesn't support this property or method
Wenn ich auf Debuggen klicke, wird diese Zeile für mich hervorgehoben
Set swApp = Application.SldWorks
Ich habe schon einiges ausprobiert, aber ich habe nicht mehr viel Ahnung...
Bei früheren Makros habe ich diesen Code:
Set swApp = CreateObject("SldWorks.application")
Also habe ich versucht, das Gleiche für diesen zu tun, aber es funktioniert nicht, ich bekomme diese Fehlermeldung:
Run-time error'13':
Tpe mismatch
Zeigt auf diese Zeile:
swApp.ActivateDoc2 opendocs(1), False, 0
In VBA Excel habe ich die Referenzen SldWorks 2017 Type Library, SOLIDWORKS 2017 Commends type library und SOLIDWORKS 2017 Constant type library aktiviert.
Hat jemand irgendwelche Ideen?
Vielen Dank im Voraus
Yves