Как я могу пойти до конца в слове, используя VBA из Excel - PullRequest
0 голосов
/ 08 февраля 2019

В моем коде VBA мне нужно перейти к концу слова документа.VBA написана и выполнена из Excel.Инструкция: Selection.EndKey unit: = wdStory, Extend: = wdMove "не запустится. Может кто-нибудь объяснить, где я делаю опечатку.

Я пытался использовать эту инструкцию в других кодах VBA, но безуспешно.

Sub InsertFromFilesTestEnd()


Dim wrdApp As Word.Application
Dim wrdDoc As Word.Document


    Set wrdApp = New Word.Application
    Set wrdDoc = wrdApp.Documents.Open("c:\users\peter\documents\direkte 0302 1650.docm")
        wrdApp.Visible = True
        wrdApp.Activate
        Application.ScreenUpdating = False

Selection.EndKey unit:=wdStory, Extend:=wdMove
End Sub

Надеюсь, вы можете привести меня к концу моего документа. Когда это так, я уверен, что смогу использовать «выделение» для перемещения по документу.

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

Использование выбора в подобных случаях совершенно не нужно.Помимо того, что он неэффективен, он также подвержен сильному мерцанию экрана.Попробуйте, например:

Sub InsertFromFilesTestEnd()
Dim wrdApp As Word.Application
Dim wrdDoc As Word.Document
Set wrdApp = New Word.Application
With wrdApp
    .Visible = True
    .ScreenUpdating = False
    Set wrdDoc = .Documents.Open("c:\users\peter\documents\direkte 0302 1650.docm")
    With wdrDoc
        .Range.Characters.Last.InsertFile FileName:="MyFileName", Range:="", _
            ConfirmConversions:=False, Link:=False, Attachment:=False
    End With
    .Activate
    .ScreenUpdating = True
End With
End Sub
0 голосов
/ 08 февраля 2019

Проблема здесь в том, что Selection не соответствует тому, какое приложение Selection вы хотите.Таким образом, он использует по умолчанию для Excel VBA, который будет приложение Excel, в котором был запущен VBA.Неявно вы говорите:

Application.Selection.EndKey unit:=wdStory, Extend:=wdMove

Ошибка в том, что у объекта Application.Selection в Excel нет метода EndKey, и поэтому VBA не имеет представления о том, что вы пытаетесь сделать здесь.

Вместо этого вы хотите квалифицировать Selection с экземпляром объекта Word.Application, с которым вы уже работаете:

wrdApp.Selection.EndKey unit:=wdStory, Extend:=wdMove
...