2009-10-19 79 views
9

我们正在操纵从.net使用Word互操作我们的Word 2007文档。主要做的领域如下:游标位置的Word文档的开始/结束

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

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

所以,为了整洁起见,我们想将光标定位在文档的(甚至开始就OK)。

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

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

编辑

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

f.Unlink 

删除mergefield,只是将字段文本留在那里作为纯文本。这是整洁,我们是否也重新定位光标

回答

12

@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) 
+0

在我的VisualStudio 2013实现这个地方光标在** **开始的最后一行,不太文档的末尾。 – Fuhrmanator 2014-02-21 03:33:10

+0

@Fuhrmanator VS 2013或Office 2013?我看到一些不同的行为从Office 2010(v14)迁移到Office 2013(v15)。他们两人都使用VS 2010 IDE,但是 – 2014-06-24 15:20:37

+0

也使用VSTO 4.0 – 2014-06-24 15:31:38

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是更容易,因为它支持可选参数。

2

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

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

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

我用单元Word_TLB在Delphi与机应用对象 - 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'); 

新内容的最后行前插入。

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) 

希望这有助于。

0

试试这个:

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

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