这是一个奇怪的头搔一个!
我有一个用VBA编写的跨MSO加载项,它使用相同的XML定义,功能区控件和VBA回调过程。它适用于PowerPoint 2007,2010& 2013(x32& x64),Excel 2010& 2013(x32& x64)。
但是,它仅在Excel 2007中作为源.xlsm
加载时有效当保存并加载为.xlam(使用注册表OPENX方法或将.xlam复制到XLSTART文件夹)时,它会失败。
当我调用一个过程使ribbonUI对象无效时,会发生故障,以便根据各自回调过程中的图像/状态刷新图库控件(其下方的按钮)。我检查了对功能区对象的引用没有丢失,但是调用invalidate方法不会导致功能区控件调用它们各自的回调过程,因此它们不会刷新。
我尝试通过将以下元素添加到2007 XML部分中的库定义来解决此问题,虽然这确实解决了图像项刷新问题,但按钮仍然不会调用回调过程。
invalidateContentOnDrop="true"
我没有发布任何代码,因为我不确定哪一位可以帮助诊断这种奇怪的行为,但可以根据要求这样做!
有什么想法吗?
答案 0 :(得分:1)
卫生署。
现在已经解决了一整天后发现了明显的明显问题!!!
问题是我已经安装了另一个在XML / VBA代码中使用相同的onLoadRibbon签名的插件,因此插件之间存在串扰,并且搞砸了所有内容!我不明白为什么它影响了2007年和2010年(后来测试),但2013年没有证明这个问题。
无论如何,我现在已经更改了两个插件中的相应签名和XML代码,如下所示:
加载项1
XML:
<customUI onLoad="app1LoadRibbon" xmlns="http://schemas.microsoft.com/office/2009/07/customui">
VBA:
Public Sub app1LoadRibbon(ByVal ribbonUI As IRibbonUI)
加载项2
XML:
<customUI onLoad="app2LoadRibbon" xmlns="http://schemas.microsoft.com/office/2009/07/customui">
VBA:
Public Sub app2LoadRibbon(ByVal ribbonUI As IRibbonUI)