Jamie,
Here is a function that returns the insert without having to cycle through all the entities in the block. It takes one argument, either an entity name for an attribute object, or an active-x attribute object. The return value will be an ename if the argument was an ename, otherwise a vla-object IAcadBlockReference is returned:
(defun AttToBlockRef( ;Given an attribute entity, returns the block reference objAtt ;attribute entity or object / objAtt WasEname OwnerID objDoc objOwner ) (if (= 'ENAME (type objatt)) (setq objAtt (vlax-ename->vla-object objAtt) WasEname T ) ) (setq OwnerId (vla-get-ownerid objAtt) objDoc (vla-get-document objAtt) objOwner (vlax-invoke-method objDoc 'ObjectIDToObject OwnerId) ) (if WasEname (vlax-vla-object->ename objOwner) objOwner)
)
Mike Weaver