Code:
Dim swApp As SldWorks.SldWorks
Dim myDwgDoc As SldWorks.ModelDoc2
Dim swDoc As SldWorks.ModelDoc2
Dim Part As Object
Dim ModelDoc2 As Object
Dim filename As String
Dim count As String
Dim DwgPath As String
Dim Pdminfo As String
Dim CloseErrors As Long
Dim CloseWarnings As Long
Dim NumDocsReturned As Long
Dim swAllDocs As EnumDocuments2Const swDocPART = 1
Const swDocASSEMBLY = 2
Const swDocDRAWING = 3
Set swApp = Application.SldWorks
Set swAllDocs = swApp.EnumDocuments2
Set ModelDoc2 = swApp.GetFirstDocument
Set Model = swApp.GetFirstDocument
' dann war gar kein Dokument geöffnet, wie soll da was funktionieren
If ModelDoc2 Is Nothing Then
MsgBox " Kein Dokument geöffnet! ", vbExclamation
End
End If
count = 0
While Not ModelDoc2 Is Nothing
'vollständig geladene Baugruppenkomponenten oder Modelle aus Zeichnungen zählen als geöffnet, sind aber nicht sichtbar
'Also nachschauen, ob das ModelDoc "sichtbar" ist
If ModelDoc2.visible = True Then
'sichtbar, also "geöffnet"
Debug.Print "Geöffnet und sichtbar: " & ModelDoc2.GetPathName
'zählt die sichtbaren Dokumente
count = count + 1
Else
'ist nur eines offen, so werden die nicht sichtbaren (z.B. die Teile einer Baugruppe) gezählt
Debug.Print "Geöffnet aber nicht sichtbar: " & ModelDoc2.GetPathName
End If
Set ModelDoc2 = ModelDoc2.GetNext
Wend
If (count > 1) Then
MsgBox ("Es sind " + count + " Dokumente in Solidworks geöffnet!") ' , vbOKOnly
End
End If
Set ModelDoc2 = swApp.GetFirstDocument
'neue Schleife
Do
'vollständig geladene Baugruppenkomponenten oder Modelle aus Zeichnungen zählen als geöffnet, sind aber nicht sichtbar
' Also nachschauen, ob das ModelDoc "sichtbar" ist
If ModelDoc2.visible = True Then
'sichtbar, also "geöffnet"
Debug.Print "Geöffnet und sichtbar: " & ModelDoc2.GetPathName
'wenn Dokument sichtbar, dann raus aus Schleife
Exit Do
Else
Debug.Print "Geöffnet aber nicht sichtbar: " & ModelDoc2.GetPathName
'End
End If
Set ModelDoc2 = ModelDoc2.GetNext
Loop While Not ModelDoc2 Is Nothing
'wenn keine Assembly aktiv ist wird das Makro wieder beendet
If (ModelDoc2.GetType <> swDocASSEMBLY) Then
MsgBox " Nur für Baugruppen geeignet! ", vbExclamation
End
End If
'Dateinamen der Baugruppe holen
filename = Model.GetTitle
*
*
*