Workbook ribbon will always refresh when it is loaded. You must put onLoad callback into CustomUI part - so it will start:
PHP Code: 
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customUI onLoad="RibbonOnLoad
In workbook you will have:
Dim rib As IRibbonUI

Sub RibbonOnload(ribbon As IRibbonUI)
   Set rib = ribbon
End Sub
then you may call rib.Invalidate from other routines.