问题标签 [ribbonx]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1436 浏览

vba - Ribbon.InvalidateControl 不适用于 PPT 2010

我在 PPT 2010 的插入功能区中有一个加载项。基本上我想做的是在组合框中进行选择,然后运行宏,然后将组合框设置为空白。不幸的是,我无法清除选择。

我用各种方法在网上搜索过,没有任何帮助。希望有人可以提供帮助。

我的 XML

VBA代码:

0 投票
1 回答
2169 浏览

vba - 动态禁用自定义 (VBA) Excel 上下文菜单按钮?

情景

大家好,我将使用此 MSDN 页面上的说明在我的 Excel 工作簿中的单元格上下文菜单(不是功能区)中添加一些自定义控件。我遇到的唯一问题是我需要仅为特定列/单元格范围启用这些项目。

我环顾四周,找不到任何步骤——有一些用于 VSTO 开发(用 C# 编写),但这不是我需要的。我计划使用 Office 中内置的 VBA IDE 编写此代码,也许还可以使用自定义 UI 编辑器编写一些 XML 。


问题

所以基本上,我正在寻找一种在调用上下文菜单时(即右键单击)运行函数的方法,该函数验证选择以确保它位于适当的列中。如果不是,我希望我的自定义按钮显示为灰色。注意:这可能根本无法通过验证功能完成,老实说,我不知道。如果有更好的方法,请随时分享(我愿意接受建议)。


附言

请不要以为我在要求您编写我的代码。创建这些按钮应该非常简单,因为我之前创建了很多(尽管它们都是功能区项目),我希望可以就这个非常具体的问题寻求一些快速帮助。

先感谢您!

0 投票
1 回答
129 浏览

dynamics-crm-2011 - Dynamics CRM 2011 RibbonXML - 是/否字段的 ValueRule

我正在尝试<ValueRule>在 RibbonXML 中为两个选项(是/否)字段创建一个,用于在<DisplayRule>条件为真时应显示按钮的。但是,我无法让它按我想要的方式工作。

<ValueRule Field="somefield" Value="(what do I put here to represent "yes"?)" />

我尝试过使用1,trueYes其他大小写变体,但无论我输入什么,规则评估为 false 并且按钮被隐藏。我怎样才能让它工作?

0 投票
4 回答
2529 浏览

vba - Excel 自定义功能区按钮调用其他功能区按钮的子例程

如果我设置了一个子程序以便可以从客户功能区按钮调用它,是否仍然可以从其他子程序调用这些子程序?我收到的参数不是可选的错误消息,但我不确定要传递给子程序的参数是什么,因为我不是从功能区按钮而是从另一个子程序本身内部调用的。

谢谢您的帮助。

0 投票
1 回答
87 浏览

excel - 为什么 RibbonMenu 嵌套限制为 5 级?我怎样才能覆盖它?

在 Excel 2010 插件中,我们以编程方式使用数据库中的项目填充多级RibbonMenu。但是,似乎不可能显示超过五个级别的RibbonMenu 。(一些)客户端得到一个运行时异常,指出最多只支持 5 个嵌套级别(逐字:“Maximal 5 geschachtelte Menüs sind zulässig.”)。关闭对话窗口后,菜单显示并且可以正常工作,但是任何深度超过五级的菜单项都丢失了,并且级别 <= 5 上的某些项目被禁用(例如,RibbonMenus 缺少它们的 level-5-RibbonButtons)。

菜单是在代码中(使用 C#)还是以声明方式(XML)创建的并不重要。

  • 为什么有嵌套限制?它是否记录在某处?
  • 我们能做些什么来超越这个限制吗?消息中的数字“5”看起来很可疑,就像在某处设置了一些神奇的 int 值......
  • 是否有任何其他控件可用于在 Excel 功能区中显示多级嵌套菜单?

谢谢和最好的问候,
托马斯

0 投票
2 回答
430 浏览

vsto - 如何创建 ContextMenuListRange VSTO c# 的上下文菜单

我想在 VSTO 中创建一个 ContextMenuListRange,我已经为 ContextMenuCell 创建了另一个 xml。如果我在另一个标签中添加列表范围,功能区会说“对象引用未设置为对象的实例。这是 xml 标签

0 投票
0 回答
947 浏览

xml - 刷新 Excel CustomUI 功能区下拉菜单不在工作簿上打开

我希望有人对此有所了解...我了解如何根据单元格将 Excel CustomUI 功能区下拉列表更新为默认值...以下方法完美运行,但以下引用的单元格“AX6”可以更新通过用户表单。我希望功能区下拉刷新/更新并反映在用户表单中选择的内容(用户表单只会使用反映 XML 代码中下拉列表的值更新单元格“AX6”)......是否有可能调用下面的 VB 子和功能区下拉更新?我似乎无法找到一种方法来调用带有“控件作为 IRibbonControl”的子而不出错,而且我不确定子语句中声明的变量是否会引发另一个扳手...对此有任何帮助非常感激!!

XML:

VB:

0 投票
0 回答
286 浏览

mocking - 将 Microsoft Fakes Framework 与基于 XML 的功能区的 VSTO 应用程序级外接程序一起使用

我有一个在 Excel 中运行的“应用程序级”VSTO 加载项(与“文档级”相对)。加载项运行良好。我使用的是 Ribbon XML 选项,而不是 Ribbon 设计器。这样做,您最终会得到一个从 Office.IRibbonExtensibility 派生的 Ribbon 类,它具有各种方法,例如:

等等

现在,当我创建一个单元测试项目时,添加对我的加载项的引用,然后从引用下的右键菜单中选择“添加假程序集”,我得到一个错误。

我不相信它与我的项目有任何关系,因为我验证了示例加载项代码也会发生同样的事情,例如这个项目: http: //www.codeproject.com/Articles/296288/Excel-Add -in-for-Exporting-Excel-data-to-XML

为了重现,我下载了该插件: 1. 在 Visual Studio 2010/2012/2013 中打开它 2. 在同一解决方案中创建一个单元测试项目。3. 将加载项项目作为解决方案级引用添加到单元测试项目。在这个特定的示例中,它被称为“ExcelExportXML”。4.然后在Unit Test项目中展开References树,右键点击插件引用,即ExcelExportXML,选择“Add Fake Assembly”。这要求您至少拥有高级版的 Visual Studio。专业版不够用。

您最终会遇到如下错误:

最好重复上述步骤来重现问题 - 只需几分钟。

我的要求是这样的。有没有办法在不切换到另一个模拟/隔离器框架的情况下完成这项工作。我真的想避免任何人建议我不要使用“Microsoft Fakes Framework”,因为这真的没有用处,除非您绝对肯定没有办法让这两种 Microsoft 技术有效地协同工作。

我已经尝试在 .fakes 文件中使用各种组合。这是我到目前为止所尝试的:

我花了大约半天的时间研究这个。任何帮助(除了将组件拆分为 VSTO 和非 VSTO 部分)将不胜感激。

0 投票
1 回答
9525 浏览

excel-2010 - 将工具提示添加到 Excel 加载项自定义功能区 UI XML

我正在创建一个具有自定义功能区 UI 的 Excel 加载项。我想为我的按钮添加一个工具提示。我可以使用哪些 XML 属性来设置它?

0 投票
2 回答
1115 浏览

vba - PowerPoint 加载项丢失 RibbonUI

我一直在努力找出分布在大约 40 个最终用户中的 PPT 插件中的错误原因。

问题:功能区状态丢失/功能区UI 对象丢失。

对于某些用户,最终Rib对象变为Nothing.

用户向我保证,他们没有收到任何运行时错误或脚本错误(来自我们也通过此加载项调用的 COM 对象)。未处理的错误,如果用户点击End会导致状态丢失。

没有一个用户能够可靠地重现导致观察到的故障的场景。这使得故障排除非常困难。我希望不希望有一些明显的东西我错过了,或者我没有预料到。

我目前如何处理丢失或 RibbonUI

为了解决这个问题,我将指向功能区的对象指针存储在三个地方,这对我来说似乎有点矫枉过正,但显然还不够:

  • 一个被调用的类对象cbRibbon有一个.RibbonUI被赋值的属性;Set cbRibbon.RibbonUI = Rib在功能区的onLoad回调过程中。所以我们有一个byRef对象本身的副本。如果丝带什么都不是,理论上我可以Set rib = cbRibbon.RibbonUI,除非cbRibbon对象也超出范围,否则这可行。
  • cbRibbon对象具有.Pointer分配的属性:cbRibbon.Pointer = ObjPtr(Rib)
  • 一个CustomDocumentProperty名为“RibbonPointer”的指针也用于存储对对象指针的引用。(注意:这甚至在状态丢失之后仍然存在

因此,您可以看到我已经对此进行了一些思考,试图复制存储此指针的方式,就像将其存储在 Excel 中的隐藏工作表/范围中一样。

附加信息

我可以从强大的客户端日志记录中看到,此错误似乎通常发生但并非总是在以下过程中发生,该过程用于刷新/使功能区及其控件无效。

每当我需要动态刷新功能区或其部分控件时,都会调用此过程:

该错误似乎(有时,我不能强调这一点:该错误不能按需复制)发生在完全刷新期间,称为:

这是进行失效的过程:

如您所见,我在此过程中做的第一件事是测试Rib对象的Nothing-ness。如果计算结果为True,则 RibbonUI 对象以某种方式丢失。

然后错误函数尝试重新实例化功能区:首先来自cbRibbon.RibbonUI,然后来自cbRibbon.Pointer,如果两者都失败,则来自CustomDocumentProperties("RibbonPointer")值。如果这些都没有成功,那么我们会显示一个致命错误,并提示用户关闭 PowerPoint 应用程序。如果其中任何一项成功,则功能区将以编程方式重新加载,一切都会继续工作。

这是该过程的代码。请注意,它调用了我没有包含代码的其他几个过程。这些是辅助函数或记录器函数。该.GetPointer方法实际上调用 WinAPICopyMemory函数以从其指针值重新加载对象。

所有这些在理论上都非常有效,实际上我可以直接终止运行时(通过调用End语句或其他方式),并且这些过程按预期重置功能区。

在此处输入图像描述

那么,我错过了什么?