これは奇妙な頭を掻くものです!
同じ XML 定義、リボン コントロール、および VBA コールバック プロシージャを使用する VBA で記述されたクロス MSO アドインがあります。PowerPoint 2007、2010 & 2013 (x32 & x64)、Excel 2010 & 2013 (x32 & x64) で動作します。
ただし、ソース .xlsm としてロードされた場合、Excel 2007 でのみ機能します。
保存して .xlam としてロードすると (レジストリの OPENX メソッドを使用するか、.xlam を XLSTART フォルダーにコピーして)、失敗します。
失敗は、リボン UI オブジェクトを無効にするプロシージャを呼び出して、ギャラリー コントロール (その下にあるボタン) がそれぞれのコールバック プロシージャのイメージ/状態に従って更新されるときに発生します。リボン オブジェクトへの参照が失われていないことを確認しましたが、invalidate メソッドを呼び出しても、リボン コントロールがそれぞれのコールバック プロシージャを呼び出さないため、更新されません。
2007 XML 部分のギャラリー定義に次の要素を追加して、この問題を回避しようとしましたが、画像アイテムの更新は解決されますが、ボタンはまだコールバック プロシージャを呼び出しません。
invalidateContentOnDrop="true"
どのビットがこの奇妙な動作の診断に役立つかわからないため、コードは投稿していませんが、リクエストに応じて行うことができます!
何か案は?