excel - 在 Excel 2019 中应用 IRibbonUI.ActivateTab

标签 excel vba

我有现有的 VBA 代码(我的)在 Excel 2010 中工作,可激活自定义功能区选项卡:IRibbonUIObjectName.ActivateTab "tabID"
该代码作为标准操作存在于处理事件窗口更改的子程序中(以在相关时激活选项卡)。

相同的代码不会在 Excel 2019 中运行。在运行时,会引发异常

'invalid call or argument'



代码通过了语法检查,我通过让 VBA 提示我重新构建了该行。

即类型:'IRibbonUIObjectName。'并让编辑器提供 ActivateTab(确认对象有效性)。

我已经阅读了当前的 office 开发文档,并且语法没有改变。

核心问题:

1) 自 2010 年以来有什么变化吗?

2) 这种方法如何在 Excel 2019 中应用?如何调用执行该方法的子程序?确切的语法是什么?

附加信息:

选项卡及其控件的所有其他功能与 2010 系统中的功能相同。

我在执行之前检查功能区对象:
If Not mobQSRibbon Is Nothing Then mobQSRibbon.ActivateTab "plTAB_QuoteSystem" 

命名空间:
customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="ModuleName.SubName" >

附加信息2:

进一步的测试表明这个问题不仅仅是一个语法问题。

该方法有时有效。具体来说:

1)打开工作簿后执行方法导致异常
- 即通过在处理作为工作簿的一部分打开而触发的 WorkbookActivate 事件时执行 ActivateTab。

2) 在处理仅通过切换到已打开的工作簿而触发的 WorkbookActivate 事件时执行该方法,不会导致异常。

3) 同样,在处理 SheetActivate 事件时仅通过切换工作表执行该方法不会导致异常。

所以这个问题似乎与 Excel 处理功能区的方式发生了变化有关,打开后工作簿。

最佳答案

一种解决方法是使用 insertBeforeMso="TabHome 更改您的功能区 XML 以在任何其他功能区之前插入您的自定义功能区。 . Office 会在打开文件时自动激活第一个功能区。

<tab id="YourTabIdHere" label="YourLabelHere" insertBeforeMso="TabHome">

关于excel - 在 Excel 2019 中应用 IRibbonUI.ActivateTab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56623675/

相关文章:

excel - 在工作表中定位图片

excel - 在每个 jar 的最大可能容量下,找到容纳最大数量 Wine 的最少 jar 数

excel - 如果 A 列包含搜索的单词,我如何添加/替换 B 列中的值

c# - microsoft.interop.excel 格式化单元格

excel - 在VBA中递归打印下一个字典

vba - Excel VBA函数删除字符串末尾的字母

excel - 如何使用动态数组进行结构化引用?

excel - vba中的应用程序定义或对象定义错误

sql-server - 如何将 SQL Server 存储过程结果返回到 Excel

excel - 将单元格值设置为电话号码格式