选择范围和排序

时间:2017-02-01 15:12:15

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

我有以下Word文档,我可以添加测试信息:

大纲视图(第2级):

目录

数字清单

缩写

  1. 部分名称
  2. 1.1 Test-01

    1.2 Test-08

    1.3 Test-02

    等...

    测试并不总是按顺序进行,我想对1.1,1.2,1.3等进行排序,所以它会是这样的:

    1. 部分名称
    2. 1.1 Test-01

      1.2 Test-02

      1.3 Test-08

      等...

      这是我到目前为止所做的:

      word_doc.ActiveWindow.ActivePane.View.Type = Word.WdViewType.wdOutlineView;
      word_doc.ActiveWindow.View.ShowHeading(2);
      

      我需要在这里选择1.1到文档的末尾,我不知道如何......

      word_app.Selection.Sort (false, ref FieldNumber, Word.WdSortFieldType.wdSortFieldAplphanumeric, Word.WdSortOrder.wdSortOrderAscending, ref missing, ...etc.)
      
      word_app.ActiveWindow.ActivePane.View.Type = Word.WdViewType.wdPrintView;
      

      我确实在1.1标题处创建了一个bookmarkstart,并在文档末尾创建了另一个bookmarkstop。我现在可以使用以下行选择文本,但是当sort函数完成时,bookmarkerstart将不再存在...

      object oBookmarkStart = "Bookmark_Start";
      object oStart = word_doc.Bookmarks.get_Item(ref oBookmarkStart).Range.Start;
      
      object oBookmarkStop = "Bookmark_Stop";
      object oStop = word_doc.Bookmarks.get_Item(ref oBookmarkStop).Range.Start;
      
      Word.range rngBKMARKSelection = word_doc.Range(ref oStart, ref oStop);
      

      任何帮助将不胜感激: - )

2 个答案:

答案 0 :(得分:0)

这是一个解决方案(可能不是最好的,但它有效!):

word_doc.ActiveWindow.ActivePane.View.Type = Word.WdViewType.wdOutlineView; word_doc.ActiveWindow.View.ShowHeading(2);

word_app.Selection.Find.set_Style(word_doc.Styles [styleHeading2]); word_app.Selection.Find.Execute();

object oBookmarkStart =" \ StarOfSelection&#34 ;; object oStart = word_doc.Bookmarks.get_Item(ref oBookmarkStart).Range.Start;

object oBookmarkStart =" \ EndOfDoc&#34 ;; object oStop = word_doc.Bookmarks.get_Item(ref oBookmarkStop).Range.Start;

Word.Range rngBKMarkSelection = word_doc.Range(ref oStart,ref oStop); rngBKMarkSelection.Select();

word_app.Selection.Sort(false,ref FieldNumber,Word.WdSortFieldType.wdSortFieldAplphanumeric,Word.WdSortOrder.wdSortOrderAscending,ref missing,...等。)

word_app.ActiveWindow.ActivePane.View.Type = Word.WdViewType.wdPrintView;

答案 1 :(得分:0)

我在脑海中键入C#,因此无法保证语法完全正确,但如果没有,您应该可以从以下示例中获取它。根据我的快速测试,RANGE在排序后保留。所以你需要做的就是重新创建一个(新)书签:

object oRngBookmark = rngBKMARKSelection;
Word.Bookmark bkm = word_doc.Bookmarks.Add("sortedRange", ref oRngBookmark);
相关问题