Üblicherweise werden mit VBA Elemente über die Methode ActiveModelReference.SelectElement als gewählt markiert:Dazu muss jedes einzelne Element über diese Methode hinzugefügt werden.Bei größeren Zeichnung mit vielen komplexen Elementen kann dies zu Performance Problemen führen, so dass dies über mehrere Minuten dauern kann.Beschleunigen kann man die Auswahl, indem man benannte Gruppen verwendet.Dazu wird eine temporäre benannte Gruppe definiert und alle zu wählenden Elemente zu dieser Gruppe hinzugefügt.Anschließend wird diese benannte Gruppe ausgewählt.Dieser Vorgang dauert bei Zeichnungen in der Größenordnung von 10MB nur noch ca. 1-2 Sekunden.
Hier eine VBA Beispiel, bei dem eine solche benannte Gruppe angelegt wird und anschließend alle Zellen des aktiven Modells in die Gruppe hinzugefügt und dann ausgewählt werden.
Option Explicit Sub SelectUsingNamedGroups() Dim ee As ElementEnumerator Dim sc As New ElementScanCriteria Dim sTime As String, sTime1 As String Dim nG As NamedGroupElement Dim nGm As NamedGroupMember Dim ngMembers() As NamedGroupMember Dim i As Long Dim counter As Long counter = 0 sTime = Time Set nG = ActiveModelReference.GetNamedGroup("tempNG") If nG Is Nothing Then Set nG = ActiveModelReference.AddNewNamedGroup("tempNG") End If ngMembers = nG.GetMembers ' evtl. vorige Auswahl löschen For i = UBound(ngMembers) To LBound(ngMembers) Step -1 nG.RemoveMember ngMembers(i) Next ActiveModelReference.UnselectAllElements sc.ExcludeAllTypes sc.IncludeType msdElementTypeCellHeader ' Beispiel Zellen Set ee = ActiveModelReference.Scan(sc) ' alle gefundenen Elemente zu named Group hinzufügen Do While ee.MoveNext Set nGm = nG.GetMember(ee.Current) If nGm Is Nothing Then nG.AddMember ee.Current counter = counter + 1 End If Loop nG.Rewrite nG.SelectElements sTime1 = Time Debug.Print "Endzeit: " & sTime1 'Angabe der benötigten Zeit in Sekundnd und Anzahl gewählter Elemente: MessageCenter.AddMessage "benötigte Zeit: " & DateDiff("s", sTime, sTime1) & " sec. für " & CStr(counter) & " Elemente" End Sub
Viel Spaß mbeim Ausprobieren und Anpassen