10

我们正在使用 Word Interop 从 .Net 操作我们的 Word 2007 文档。主要用以下字段做事情:

For Each f In d.Fields
    f.Select()
    //do stuff with fields here            
Next

这将使文档中的最后一个字段保持选中状态。

因此,为了简洁起见,我们希望将光标定位在文档的末尾(甚至开头也可以)。

谷歌搜索答案并没有太多......我能得到的最接近的似乎是建议我们需要让自己参与范围或书签。该对象有一个GoTo方法,DocumentWdGoToItem它提供的选项都没有用。

难道没有一种简单的方法可以将光标发送到文档的末尾(或开头)吗?

编辑

我的部分问题是我不喜欢选择最后一个字段。现在已经意识到我可以做到

f.Unlink

删除mergefield并将字段文本保留为纯文本。哪个更整洁,无论我们是否也重新定位光标

4

9 回答 9

13

@Alexander Kojevnikov:感谢您的帮助,因为您让我走上了正轨。但是我发现我必须将 .GoTo 应用于 Word Selection 对象,而不是 Document。如:

    Dim what As Object = Word.WdGoToItem.wdGoToLine
    Dim which As Object = Word.WdGoToDirection.wdGoToLast

    //below line had no effect
    //d.GoTo(what, which, Nothing, Nothing)

    w.Selection.GoTo(what, which, Nothing, Nothing)
于 2009-10-20T08:45:16.530 回答
8

这是它在 C# 中的外观:

object missing = Missing.Value;
object what = Word.WdGoToItem.wdGoToLine;
object which = Word.WdGoToDirection.wdGoToLast;
doc.GoTo(ref what, ref which, ref missing, ref missing);

我想在 VB.Net 中它会更容易,因为它支持可选参数。

于 2009-10-19T23:49:31.070 回答
3

我不确定我使用的是与您相同的环境,但是要转到文档的开头结尾,这对我有用:

Private Sub moveCursorToStartOfDocument()
    w.Selection.HomeKey(WdUnits.wdStory, Nothing)
End Sub

Private Sub moveCursorToEndOfDocument()
    w.Selection.EndKey(WdUnits.wdStory, Nothing)
End Sub
于 2014-02-21T03:44:17.647 回答
2

我在 Delphi 中使用单元 Word_TLB 和应用程序对象-Word.Application

如下:

aWordDoc.Application.Selection.EndKey(wdStory,wdMove);

一般word文档的结尾是

Selection.EndKey( WdUnits.wdStory, WdMovementType.wdMove)

当我使用

Selection.GoTo(Word.WdGoToItem.wdGoToLine, Word.WdGoToDirection.wdGoToLast, Nothing, Nothing);
Selection.InsertFile('documnet.docx');

在最后一行之前插入了新内容。

于 2015-04-22T14:30:20.973 回答
1

找出实际代码大纲的最简单方法是在 Word 中为该特定操作记录一个宏。然后您可以修改生成的代码以适应 VB、VB.NET、C# 等的不同语法。

下面的代码片段演示了 VB.NET 应用程序的用法:

Imports wordNmSpace = Microsoft.Office.Interop.Word
' Create an object for the application instance
objWord = CreateObject("Word.Application")

' Create a reference of the selection object within Word
objSelection = objWord.Selection

' Now comes the part where you move selection position to the end of document
objSelection.endof(wordNmSpace.WdUnits.wdStory, wordNmSpace.WdMovementType.wdMove)

希望这可以帮助。

于 2015-10-29T11:58:52.093 回答
0

要在 C# Word 加载项 VSTO 中更改当前文档末尾的光标位置:

this.Application.ActiveDocument.Range(
this.Application.ActiveDocument.Content.End-1,
this.Application.ActiveDocument.Content.End-1).Select();

请参阅如何:以编程方式定义和选择文档中的范围

于 2015-08-21T13:43:12.887 回答
0

试试这个 :

int lNumberOfPages = 
  _WordDoc.ComputeStatistics(Word.WdStatistic.wdStatisticPages, false);

WordApp.Selection.GoTo(Word.WdGoToItem.wdGoToPage,WordApp.WdGoToDirection.wdGoToLast, lNumberOfPages);
于 2017-10-03T02:03:57.833 回答
0

您可以使用预定义的书签:

EndOfDoc oDoc.Bookmarks.Item("\endofdoc").Range

其他预定义书签:

ActiveDocument.Bookmarks("\Para").Copy "currpara"

https://msdn.microsoft.com/en-us/VBA/Word-VBA/articles/predefined-bookmarks

于 2018-08-03T19:18:00.050 回答
0

对于网络办公室:

mydoc.Range(GlobalClass.mydoc.Content.End-1 , mydoc.Content.End - 1).Select();
于 2019-02-10T11:27:45.067 回答