将光标定位在Word文档的开始/结束

问题描述 投票:10回答:9

我们正在操纵从.net使用Word互操作我们的Word 2007文档。大多用做在领域的东西:

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

这留下的最后一个字段选择在文档中。

所以,为了整洁起见,我们想将光标移动到文件(甚至一开始就OK)的结束位置。

谷歌搜索的答案不扔了多少......最近我可以得到,似乎在暗示我们需要给自己用的范围或书签涉及。还有的GoTo对象Document方法,但没有它提供了WdGoToItem选项很有用。

是不是有一个简单的方法来只发送光标到结束(或启动)的文件?

编辑

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

f.Unlink

除去mergefield和刚刚离开现场文本有以纯文本格式。这是整洁,我们是否也重新定位光标

.net interop ms-word mergefield
9个回答
13
投票

@Alexander Kojevnikov:感谢您的帮助,因为你把我在正确的轨道上。但是我发现我已经到.GoTo适用于Word中选择对象,而不是文件。如:

    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)

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是更容易。


3
投票

我不知道我使用的是相同的环境中你,但去的开始或结束的文件在这里对我来说是什么在起作用:

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

Private Sub moveCursorToEndOfDocument()
    w.Selection.EndKey(WdUnits.wdStory, Nothing)
End Sub

2
投票

我用单位Word_TLB在Delphi与机应用对象 - Word.Application

如下:

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

通常结束字文档的是:

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

当我使用

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

新内容的最后行前插入。


1
投票

要弄清楚的实际代码大纲的最简单方法是在Word中录制宏为具体行动。然后,你可以修改生成的代码,以满足VB,VB.NET,C#等不同的语法(S)

下面摘录的代码演示了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)

希望这可以帮助。


0
投票

要改变光标位置在当前文档的在C#字结束外接VSTO:

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

How to: Programmatically Define and Select Ranges in Documents


0
投票

尝试这个 :

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

WordApp.Selection.GoTo(Word.WdGoToItem.wdGoToPage,WordApp.WdGoToDirection.wdGoToLast, lNumberOfPages);

0
投票

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

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

其他预定义的书签:

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

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


0
投票

净办公室:

mydoc.Range(GlobalClass.mydoc.Content.End-1 , mydoc.Content.End - 1).Select();
© www.soinside.com 2019 - 2024. All rights reserved.