问题标签 [word-addins]
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.
c# - Word 加载项 - 功能区
我在 Word 加载项功能区中创建了两个按钮:button1 和 button2
当我打开类型 1 的文档时,我只显示 button1,当我打开第二种类型的文档时,我只显示 button2。
问题是,例如,当我打开第一个文档并将其保持打开状态时,在使用第二种类型打开第二个文档后,我总是在功能区中找到 button1。
即使第一个文档仍处于打开状态,如何强制第二个文档显示 button2 而不是 button1。
ms-word - 为 Word 2013 OpenXML 元素分配自定义唯一 ID
TLDR/问题
如何最好地将唯一 ID 分配给 XML 中描述 Word 文档的元素(理想情况下是所有元素),以便我可以从 Word (2013) 加载项中读取/写入这些唯一 ID?
此外,描述我可以获得两个 Word 文档的良好差异的方法的解决方案可能会有所帮助,但这不是主要问题。
背景
我正在使用 VSTO 为 Word (2013) 创建应用程序级加载项。我的部分任务涉及将原始 Word 文档W
与修改后的文档进行W'
比较,以便我可以为另一个任务处理差异。虽然 Word 显然具有差异/合并功能(在 Word 2013 的“审阅”面板中可用),但到目前为止,我还没有找到一种以编程方式提取差异的方法。
因此,我计划获取文档的 XML(例如使用Range.WordOpenXML
)并区分它们。有许多已发布的用于区分 XML 文档(即Diff(W.XML, W'.XML)
diff)的算法,其中 diff 的准确性很大程度上取决于能否正确匹配两个文档中的 XML 元素。
提出的解决方案及其问题
因此,我希望能够为我可以从我的加载项访问的 Word 文档的 XML 中的每个元素分配一个唯一的 ID。在这种情况下,解决方案类似于将自定义命名空间导入到调用的包中,并为 DOCX 包中的每个元素mynamespace
添加属性mynamespace:ID=***
。然后可以通过 访问该属性Range.WordOpenXML
。
但是,只需使用 mce:Ignorable、mce:ProcessContent 和 mce:PreserveAttributes,详见http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2012/09/21/markup-compatibility-and-extensibility.aspx不起作用。修改后的 Word 文档加载没有任何问题,但是我似乎找不到任何属性,另外保存文档会删除所有添加的标记。
从http://openxmldeveloper.org/discussions/formats/f/13/p/8078/163573.aspx看来,通过 Office Open XML 标准的标记兼容性和可扩展性 (MCE) 部分使用自定义 xml 的过程具有多年来变得复杂(专利问题等)。因此,我猜测我的问题出现是因为 Word 的 XML 处理器只是删除了它无法本地处理的所有标记(也许有一种方法可以连接到 Word 的 XML 处理器并为其提供自定义命令?)。
c# - 在代码隐藏中保存 Word 文档会在 Word 2013 中按语言更改样式名称添加到项目中
我在 Word 2013 中保存 Active Document 时遇到问题,它在调用 Save() 方法后会更改样式名称。
提取该 .docx 文件后,我在 styles.xml 文件中看到我的样式名称已按语言更改了单词。例如,我有一个样式名称“标题 1”,保存后将其更改为“Otsikko11”。单词“Otsikko”是芬兰语,意思是标题。我怎样才能防止这种情况发生?我的项目是 Word 2013 添加
c# - 如何创建 Word 插件窗格滚动按钮
我正在创建自己的 Word 插件,我想重新创建 Microsoft 在其窗格顶部/底部的这些小箭头按钮使用的滚动效果(如下面的文档恢复面板)。有任何想法吗?
ms-word - MS Office Word VSTO “Load On Demand”
We have developed a product that is a standard VSTO addin (Word 2010 and Word 2013, x86 only). By default when it is installed, it is installed for all users (ie. the addin registry entries are inserted into HKLM - HKEY_LOCAL_MACHINE\SOFTWARE\[Wow6432Node]\Microsoft\Office\Word\Addins
).
When the value for the LoadBehavior
reg key is set to 0x3
(i.e. "Load at Startup"), the addin works perfectly fine, however when we set the value for LoadBehavior
to 0x10
(i.e. "Load on demand"), the addin does not work as we would expect:
Due to UAC (and that Word does not run elevated), the value of LoadBehavior
in HKLM is not changed from 0x10
to 0x9
but instead is overridden by creating a LoadBehavior
key (with value 0x9
) in the HKCU hive.
Unfortunately, we have found that this HKCU overridden value is not taken into account unless the Manifest key is present in the HKCU hive along with LoadBehavior
). More info on this related thread: https://social.msdn.microsoft.com/Forums/vstudio/en-US/3776734b-333e-423b-9c08-7c7a441c3e94/load-behavior-and-word-addin?forum=vsto
The 'obvious' remedy for this issue is to write the Manifest
into HKCU for each user (as well as in HKLM) at install time OR when each user run the addin the first time. There are however some serious drawbacks with this approach:
- Uninstalling the addin requires removing every user HKCU values to prevent users experiencing loading issues (this is not recommended and poses other issues/complications such as the need to use Active Setup - Remove registry keys under HKCU on a per machine installation).
- Users which have these values in their (roaming) HKCU hive, experience issues when they login to a machine in the same domain which does not have our addin installed.
Is it a bug that the manifest is not obtained from HKLM where the LoadBehavior
is set appropriately in HKCU? I think this issue would be resolved if the LoadBehavior
in HKLM could be overridden in HKCU without the need for the Manifest
value to be overridden as well.
Anyone knows of a way to overcome this issue?
c# - 确定段落是标准文本还是标题
有没有办法确定段落是标准文本还是标题?
不使用任何第三方组件,例如Spire.Doc
请注意以下代码:仅当字样式“标题 1”未重命名时才有效。
所以,我想在不知道他们名字的情况下获得标题。
谢谢
c# - 保护除一个书签之外的整个 Word 文档
我正在开发一个包含一些书签的 Word 加载项项目。要更新这些字段,代码会使用以下命令解锁文档:
然后从服务器中提取内容并锁定:
为了使特定书签保持解锁状态,我尝试使用以下代码:
这不会使书签1 保持解锁状态。还有什么我可以尝试让一个书签解锁而其他书签被锁定吗?
ms-word - 打开多个word文档时的word addin功能区实例
我正在使用自定义窗格创建一个单词插件。
我还创建了一个带有复选框控件的功能区,它根据选中的更改事件显示/隐藏自定义窗格。
如果我只有一个单词实例,一切都很好。
当我创建另一个 word 文档实例时,单击文档 2 中的复选框会触发文档 1 的事件并隐藏窗格。
如何为每个 word 实例分别同步功能区和自定义窗格?
谢谢。
migration - 视觉工作室 2015 办公室 2007
我的工作是维护一个多年前创建的 word-addin,由许多像我这样的年轻程序员开发;)该插件运行良好,并且不时需要做一些简单的更改,所以我的任务是带来最新的开发环境。
插件作为 Visual Basic 项目与 Visual Studio 2005(在 XP 模式下)和 .dot 文件
一起交给我现在我想使用 Visual Studio 2015,但是当我尝试迁移项目时出现错误说我正在使用的 word 版本不受 VS2015 支持,并告诉我至少使用 Office 2010。问题是,我的公司只使用 Office(Word) 2007。
那么如何让 VS2015 正确迁移项目并使用 word 2007?还是我必须使用2010?我读过 2010-addins 可以在 2007 年使用,反之亦然,所以这应该不是问题。
安装了以下软件:
- 微软 .NET 框架 2.0 SP2
- 微软 .NET 框架 3.0 SP2
- 微软 .NET 框架 3.5 SP1
- 微软 .NET 框架 4/4.5/4.5.1/4.5.2/4.6
- 适用于 Visual Studio 2015 的 Microsoft Office 开发人员工具
- 适用于 Office 运行时的 Microsoft Visual Studio 2010 工具
- 适用于 Office Second Edition 运行时的 Visual Studio 2005 工具
- Visual Studio 2015 社区
- 微软办公软件 2007
谢谢你的帮助:) 请原谅我的英语不好
.net - 如何让用户在 Word Addin 方法期间设置光标位置?
我正在尝试为 Word Addin 编写一个方法,该方法在等待用户将光标设置到文档中的某个位置时显示一个消息框。在消息框上点击“确定”后,该方法继续在该位置插入一些数据。
这可能会发生多次,因为该方法会在插入数据后询问用户是否要在文档的另一个位置插入更多数据。
我遇到的问题是消息框是模态的,不允许我在文档中单击,当使用非模态自定义表单时,代码会继续运行而无需等待用户输入。
有没有办法解决这个问题?