gpt4 book ai didi

vba - 当加载为 VBA .xlam 时,功能区无效在 Excel 2007 中不起作用

转载 作者:行者123 更新时间:2023-12-04 20:45:22 25 4
gpt4 key购买 nike

这是一个奇怪的挠头!

我有一个用 VBA 编写的跨 MSO 插件,它使用相同的 XML 定义、功能区控件和 VBA 回调过程。它适用于 PowerPoint 2007、2010 和 2013(x32 和 x64)、Excel 2010 和 2013(x32 和 x64)。

但是,它仅在作为源 .xlsm 加载时在 Excel 2007 中有效

当保存并加载为 .xlam(使用注册表 OPENX 方法或将 .xlam 复制到 XLSTART 文件夹)时,它会失败。

当我调用一个过程使ribbonUI 对象无效时发生故障,以便根据其各自回调过程中的图像/状态刷新库控件(其下方有按钮)。我检查了对功能区对象的引用没有丢失,但调用 invalidate 方法不会导致功能区控件调用它们各自的回调过程,因此它们不会被刷新。

我尝试通过将以下元素添加到 2007 XML 部分的库定义中来解决此问题,虽然这确实解决了图像项刷新问题,但按钮仍然不调用回调过程。

invalidateContentOnDrop="true"

我没有发布任何代码,因为我不确定哪个位有助于诊断这种奇怪的行为,但可以根据要求这样做!

有任何想法吗?

最佳答案

多哈。

经过一整天的发现,现在已经解决了这个问题!

问题是我已经安装了另一个插件,它在 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)

关于vba - 当加载为 VBA .xlam 时,功能区无效在 Excel 2007 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19433905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com