我有以下Word文档,我可以添加测试信息:
大纲视图(第2级):
目录
数字清单
缩写
1.1 Test-01
1.2 Test-08
1.3 Test-02
等...
测试并不总是按顺序进行,我想对1.1,1.2,1.3等进行排序,所以它会是这样的:
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);
任何帮助将不胜感激: - )
答案 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);