Try removing "control as IRibbonControl" from your vba. That does not work on QAT icons but only on Ribbon buttons.
I ran into the obverse problem a while back where it would run from a button on the QAT or by calling the macro directly when the template was loaded as a global but would not run from the ribbon button.
See
Wrong number of arguments or invalid property assignment error message in Ribbon customization
By the way, I find using the UI as the principle way to modify the QAT easier than xml. Then I may modify the XML to add tooltips and supertips or change the icon.