【问题标题】:Word Interop Bookmarks Dont ExistWord 互操作书签不存在
【发布时间】:2020-07-07 09:18:17
【问题描述】:

我目前正在创建一个 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 时,书签消失了。以编程方式,我收到书签不在收藏错误,但也通过允许打开单词并手动检查书签被替换为文本但书签引用已经消失。

有没有办法解决这个问题?

【问题讨论】:

    标签: c# .net ms-word office-interop


    【解决方案1】:

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

    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);
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-24
      • 1970-01-01
      • 2020-11-30
      相关资源
      最近更新 更多