Положение курсора на начало/конец документа Word

StackOverflow https://stackoverflow.com/questions/1591682

Вопрос

Мы манипулируем нашим словом 2007 года от .net с использованием Word Interop. В основном делая вещи с полями, как в:

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

Это оставляет последнее поле в выбранном документе.

Итак, ради аккуратности мы хотели бы позиционировать курсор на конец документа (или даже Начало было бы в порядке).

Гуглинг для ответа не так ужесточает ... ближайшее, что я могу получить, кажется, предполагает, что нам нужно привлечь себя к диапазонам или закладкам. Есть GoTo Метод для Document объект, но ни один из WdGoToItem Варианты, которые он предлагает, полезны.

Разве нет простого способа просто отправить курсор до конца (или запуска) документа?

Редактировать

Часть моей проблемы заключалась в том, что мне не нравилось оставлять последнее выбранное поле. Теперь понял, что я могу сделать

f.Unlink

Чтобы удалить mergefield И просто оставьте текст поля там как простой текст. Что аккуратно, независимо от того, изменяем ли мы курсор

Это было полезно?

Решение

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

Другие советы

Вот как это выглядит в 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 будет еще проще, поскольку он поддерживает дополнительные параметры.

Я не уверен, что использую ту же среду, что и вы, но чтобы пойти в Начало или же конец о документе вот что работает для меня:

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

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

Я использую UNIT WORD_TLB в Delphi с Appliction Object- 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');

Новый контент был вставлен до последней строки.

Самый простой способ выяснить план фактического кода - записать макрос в 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)

Надеюсь это поможет.

Чтобы изменить позицию курсора в конце текущего документа в Add-in VSTO C#:

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

Видеть Как: программно определять и выбрать диапазоны в документах

Попробуй это :

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"

https://msdn.microsoft.com/en-us/vba/word-vba/articles/predefined-bookmarks

Для чистого офиса:

mydoc.Range(GlobalClass.mydoc.Content.End-1 , mydoc.Content.End - 1).Select();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top