Hey Jeff,
I'm familiar with Andrey's ATTSYNC and will look at it again to see if it handles dynamic actions applied to it, but was not using it because this routine was a different approach needed for a job. It basically erases all attributes except a ID, and adds three that are fields for its position, and then ensures no ID's are duplicated in drawing and a excel file. It then finds matching ID in excel file and if the column has a value it adds a attributeReference for it.
They are blocks set up by a client and did not like a bunch of empty attributes or many of the attributes used.
I tried explaining to them when you have attributes CertainComponent1, CertainComponent2, CertainComponent3 ... CertainComponentX and a blockreference might need 1 all the way up to X, is a sign you might be using one block to represent to many things and attributes with option1/option2/option3/option4
is another sign that one block is probably busy, not to mention a bunch of manufacturer specific attributes that only applied to half.
I Added ability to export attributes to a worksheet for each block and letting them fill in what they wanted and leaving a cell empty left attribute off blockreference made them happy.