Hallo Roland.
Hier ein kleine Routine, die per Selectionset die Blockreferenzen ausliest. Dieses geht schneller als die gesamte Zeichnung sequenziel zu durchsuchen. Nur musst du später das Selectionset nach dem Attribut durchsuchen. Dieses kannst du mit der Methode GetAttributes erreichen.
On Error Goto AttViewError
Dim varAttributes As Variant
Dim ssetObj As AcadSelectionSet
Dim groupCode As Variant, dataCode As Variant
Dim gpCode(0) As Integer
Dim dataValue(0) As Variant
Set ssetObj = ThisDrawing.SelectionSets.Add("SSET")
gpCode(0) = 0
dataValue(0) = "Insert"
groupCode = gpCode
dataCode = dataValue
ssetObj.Select acSelectionSetAll, , , groupCode, dataCode
imax = ssetObj.Count
'hier bitte das Selectionset auswerten
Da bei vorhandenen Selectionset ein Laufzeitfehler auftritt, musst du diesen wie folgt abfangen
Set objRBez = Nothing
Set ojRbezRef = Nothing
Set varAttributes = Nothing
Set ssetObj = Nothing
Exit Function
AttViewError:
Select Case err.Number
Case -2145320851
ThisDrawing.SelectionSets.Item("SSET").Delete
err.Clear
Resume
Case Else
mlngErrorNumer = actError.AttNameNotExist
mstrErrorDescription = actError.AttNameNotExistDes
End Select