Not tested:
(defun C:ChgAttLays ( / AcaDoc AttLst CurEnt CurLay CurObj CurSet FltLst)
(vl-load-com)
(setq FltLst '((0 . "INSERT") (66 . 1))
AcaDoc (vla-get-ActiveDocument (vlax-get-acad-object))
)
(vla-StartUndoMark AcaDoc)
(princ "\nSelect blocks or <all>...")
(if (setq CurSet (cond ((ssget FltLst)) ((ssget "_X" FltLst))))
(while (setq CurEnt (ssname CurSet 0))
(setq CurObj (vlax-ename->vla-object CurEnt)
CurLay (vla-get-Layer CurObj)
AttLst (append
(vlax-invoke CurObj 'GetAttributes)
(vlax-invoke CurObj 'GetConstantAttributes)
)
)
(foreach memb AttLst (vla-put-Layer memb CurLay))
(vla-Update CurObj)
(ssdel CurEnt CurSet)
)
)
(vla-EndUndoMark AcaDoc)
(princ)
)