首页 > 解决方案 > VSTO Word Office 互操作:查找对书签的引用

问题描述

给定 Word 中的选择,其中包含一个Bookmark- 例如这样的标题(这是在SelectionChange事件内部):

var selectionWithBookmark = e.Selection.Bookmarks.Cast<dynamic>().Select(b => b.Range as Range).FirstOrDefault();

如何Type == WdFieldType.wdFieldRef在引用此书签的文档中找到所有交叉引用(即 )?

我不仅想找到Fields 本身,还想找到包含这些字段的段落。

在 C# 或 VB 中寻找答案。

我可以循环/迭代文档中的所有引用,但没有办法将它们链接到书签(除了Code属性 - 但从我所见,书签上实际上并不存在 REF 编号)。它缺少的是某种形式的Target属性,我可以将其与书签本身进行比较。

标签: ms-wordvstooffice-interopoffice-addinsword-interop

解决方案


问题中的以下陈述让我想知道......

从我所见,书签上实际上并不存在 REF 编号。

书签名称应包含 REF 编号,但其前面会带有下划线 _,因此默认情况下该名称不会显示在 UI 中。

在书签对话框中有一个小复选框“隐藏的书签”:单击它两三下,应该会显示一个列表,如下面的屏幕截图所示。

带有 REF 编号的书签对话框

Debug.Print(bookmark.Name)也应该显示这一点。

一旦知道书签名称,就应该不难找到相应的REF字段。


推荐阅读