【问题标题】:How can I programmatically convert Microsoft Word comments to bookmarks using C#?如何使用 C# 以编程方式将 Microsoft Word 注释转换为书签?
【发布时间】:2015-02-26 06:46:20
【问题描述】:

由于 URL 中可以包含书签,因此我想将文档中的所有 cmets 转换为书签。

我编写了一个 c# 应用程序,它在 Web 浏览器的 activex 控件中显示 Microsoft Word 文档。我得到了文档的句柄,并且能够枚举 cmets。但是当我尝试在评论位置插入书签时,我最终会得到不指向任何内容的 NULL 书签,例如:

    void ButtonConvertCommentsClick(object sender, EventArgs e)
    {
        Word.Comments wordComments = this.wordDoc.Comments;           
        MessageBox.Show("This document has " + wordComments.Count + " comments.");

        for (int n = 1; n <= wordComments.Count; n++)
        {
            Word.Comment comment = this.wordDoc.Comments[n];
            Word.Range range = comment.Range;
            String commentText = comment.Range.Text;

            this.wordDoc.Application.ActiveDocument.Bookmarks.Add("BOOKMARK"+n, range);
        }
        this.wordDoc.Save();
        ....
    }

假设文档中有 3 个 cmets,“BOOKMARK1”、“BOOKMARK2”和“BOOKMARK3”会显示在书签列表中,但“转到...”按钮对所有这些都禁用。

我做错了什么?

【问题讨论】:

  • 如果我将此代码粘贴到 word2010 的应用级插件 (vsto) 中,它可以正常工作。

标签: c# ms-word bookmarks


【解决方案1】:

使用scope获取评论范围...

    for (int n = 1; n <= wordComments.Count; n++)
    {
        Word.Comment comment = this.wordDoc.Comments[n];
        Word.Range range = this.wordDoc.Range(comment.Scope.Start, comment.Scope.End);
        String commentText = comment.Range.Text;

        this.wordDoc.Application.ActiveDocument.Bookmarks.Add("BOOKMARK"+n, range);
    }

【讨论】:

  • 哇。它奏效了——我已经为此旋转了 两天 天!谢谢,“晶体管1”。
猜你喜欢
  • 2010-10-08
  • 2011-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-02
  • 2012-07-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多