【问题标题】:How can I go to end in word, using vba from Excel如何使用 Excel 中的 vba 以 word 结尾
【发布时间】:2019-02-11 04:30:52
【问题描述】:

在我的 vba 代码中,我需要转到 word 文档的末尾。 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

希望您能指导我完成文档的结尾。如果是这样,我确信我可以使用“选择”在文档中移动。

【问题讨论】:

  • “不会运行”是什么意思?脚本中的行执行但您的光标不在文档的末尾?还是在执行该行时出现错误?
  • 代码停止,运行时错误 438。对象不支持此属性或方法。

标签: excel vba ms-word selection


【解决方案1】:

这里的问题是Selection 不符合您想要的应用程序的Selection。因此,它使用 Excel VBA 的默认值,即启动 VBA 的 Excel 应用程序。隐含的意思是:

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

该错误是因为 Excel 的 Application.Selection 对象没有 EndKey 方法,因此 VBA 不知道您要在这里做什么。

相反,您想用您已经在使用的 Word.Application 对象的实例来限定 Selection

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

【讨论】:

  • 谢谢 JNevill。
【解决方案2】:

在这种情况下使用选择是完全没有必要的。除了效率低下,它还容易产生大量的屏幕闪烁。试试,例如:

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

【讨论】:

    猜你喜欢
    • 2021-07-16
    • 2021-10-21
    • 2023-03-21
    • 1970-01-01
    • 2020-04-10
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多