Word Interop 书签不存在

Word Interop Bookmarks Dont Exist

我目前正在创建一个 c# 程序,它使用 template.dotx 包含预定义构建块(带有书签)的内容页面插入新文档,所有工作如下

            Word._Application oWord;
            Word._Document oDoc;
            object oMissing = System.Reflection.Missing.Value;
            object bAddress = "bAddress";

            oWord = new Word.Application();
            
            object oTemplate = _template;
            oDoc = oWord.Documents.Add(ref oTemplate, ref oMissing,
            ref oMissing, ref oMissing);

            Word.Template objTmpl = (Word.Template)oDoc.get_AttachedTemplate();
            Word.BuildingBlock objBB = objTmpl.BuildingBlockEntries.Item("PageBB");

            Range where = oDoc.Range(oDoc.Content.End - 1, oDoc.Content.End - 1);

            var orng = objBB.Insert(where, true);
            orng.Bookmarks[bAddress].Range.Text = "Address";

我想反过来执行此操作,以便稍后打开创建的文件,并通读每个书签以获取值。

问题是当我打开生成的 DocXCreatedFromTemplate.docx 时,书签消失了。以编程方式,我收到书签不在集合中的错误,但也通过允许打开 word 并手动检查书签被文本替换,但书签参考已经消失。

有什么办法解决这个问题吗?

我已经解决了,下面的文字替换删除书签

orng.Bookmarks[bAddress].Range.Text = "Address";

解决方法是之后使用如下方法重新添加书签

private void UpdateBookmarkWithoutDeleting(object bookmark, string text, _Document document)
{
      var bookmarkRange = document.Bookmarks[bookmark].Range;
      bookmarkRange.Text = text;
      document.Bookmarks.Add(bookmark.ToString(), bookmarkRange);
}

我在link(在VB中)找到了信息: https://wordmvp.com/FAQs/MacrosVBA/InsertingTextAtBookmark.htm