Thanks Tony: now it work!
but can you tell me if it is a good way or is there a better way to extract
all attribute from blocks?
Dim AcadDoc As Document = Application.DocumentManager.MdiActiveDocument
Dim ed As Editor = AcadDoc.Editor
Dim db As Database = HostApplicationServices.WorkingDatabase
Dim tr As Transaction = db.TransactionManager.StartTransaction()
Dim BT As BlockTable = tr.GetObject(db.BlockTableId, OpenMode.ForRead)
Dim BTR As BlockTableRecord = tr.GetObject(BT(BlockTableRecord.ModelSpace),
OpenMode.ForRead)
For Each id As ObjectId In BTR
Dim Obj As DBObject = tr.GetObject(id, OpenMode.ForRead)
If TypeOf Obj Is BlockReference Then
Dim BR As BlockReference = CType(Obj, BlockReference)
Dim myblocktablerecord As BlockTableRecord =
tr.GetObject(BR.BlockTableRecord, OpenMode.ForRead)
ed.WriteMessage(myblocktablerecord.Name & vbCrLf)
Dim attcol As AttributeCollection = BR.AttributeCollection
For Each idatt As ObjectId In attcol
Dim att As AttributeReference = tr.GetObject(idatt, OpenMode.ForRead)
ed.WriteMessage(att.Tag.ToString + " - " + att.TextString.ToString + vbCrLf)
Next
End If
Next