.net 将光标定位在Word文档的开头/结尾
我们正在使用Word Interop从.Net操作Word 2007文档。主要使用字段进行操作,如:.net 将光标定位在Word文档的开头/结尾,.net,interop,ms-word,mergefield,.net,Interop,Ms Word,Mergefield,我们正在使用Word Interop从.Net操作Word 2007文档。主要使用字段进行操作,如: For Each f In d.Fields f.Select() //do stuff with fields here Next 这将使文档中的最后一个字段处于选中状态 因此,为了整洁起见,我们希望将光标定位在文档的末尾(甚至开始也可以) 在谷歌上搜索答案并不会让人感觉到什么。。。我能得到的最接近的结果似乎是建议我们需要参与范围或书签。对于Docum
For Each f In d.Fields
f.Select()
//do stuff with fields here
Next
这将使文档中的最后一个字段处于选中状态
因此,为了整洁起见,我们希望将光标定位在文档的末尾(甚至开始也可以)
在谷歌上搜索答案并不会让人感觉到什么。。。我能得到的最接近的结果似乎是建议我们需要参与范围或书签。对于Document
对象,有一个GoTo
方法,但是它提供的WdGoToItem
选项都没有用处
难道没有一种简单的方法可以将光标发送到文档的末尾(或开头)吗
编辑
我的问题的一部分是我不喜欢留下最后一个字段。我现在意识到我能做到
f.Unlink
要删除合并字段
,只需将字段文本保留为纯文本即可。这更整洁,不管我们是否重新定位光标这是C#中的外观:
我想在VB.Net中会更容易,因为它支持可选参数。@Alexander Kojevnikov:谢谢你的帮助,因为你让我走上了正确的道路。但是,我发现我必须将.GoTo应用于单词选择对象,而不是文档。例如:
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)
我不确定我使用的环境是否与您相同,但要转到文档的开始或结束,以下是适合我的内容:
Private Sub moveCursorToStartOfDocument()
w.Selection.HomeKey(WdUnits.wdStory, Nothing)
End Sub
Private Sub moveCursorToEndOfDocument()
w.Selection.EndKey(WdUnits.wdStory, Nothing)
End Sub
我在Delphi中使用了带有Application对象-Word.Application的unit Word_TLB 详情如下:
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');
在最后一行之前插入了新内容。要更改C#Word加载项VSTO中当前文档末尾的光标位置,请执行以下操作:
this.Application.ActiveDocument.Range(
this.Application.ActiveDocument.Content.End-1,
this.Application.ActiveDocument.Content.End-1).Select();
请参见找出实际代码大纲的最简单方法是在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)
希望这有帮助。试试这个:
int lNumberOfPages =
_WordDoc.ComputeStatistics(Word.WdStatistic.wdStatisticPages, false);
WordApp.Selection.GoTo(Word.WdGoToItem.wdGoToPage,WordApp.WdGoToDirection.wdGoToLast, lNumberOfPages);
您可以使用预定义的书签:
EndOfDoc oDoc.Bookmarks.Item("\endofdoc").Range
其他预定义书签:
ActiveDocument.Bookmarks("\Para").Copy "currpara"
对于网络办公室:
mydoc.Range(GlobalClass.mydoc.Content.End-1 , mydoc.Content.End - 1).Select();
在我的VisualStudio 2013实现中,这会将光标放在最后一行的开头,而不是文档的结尾。@Fuhrmanator VS 2013或Office 2013?我看到一些不同的行为从Office 2010(v14)迁移到Office 2013(v15)。他们都使用VS 2010 IDE,however@MichaelPaulukonis绝对是2013年。请参阅my,以了解适合我的解决方案。VS2013是一个IDE。这到底有什么影响?您使用的是什么.NET运行时?甚么版本的VSTO?什么版本的Office?
mydoc.Range(GlobalClass.mydoc.Content.End-1 , mydoc.Content.End - 1).Select();