【问题标题】:move selection to end of word document将所选内容移至 word 文档末尾
【发布时间】:2022-10-04 16:35:52
【问题描述】:

我有一个包含文本的word文档,当文档打开时,选择位于文档的第一行,所以当我运行下面的代码添加新页面时,整个文本都会移动到新页面,我该怎么做将选择移动到文档的末尾,以便在我添加新页面时文本不会移动到新页面?

编辑:在下面尝试但不起作用

“objSelection.EndKey 单元:=wdStory,扩展:=wdMove”

"objWord.Documents("letters.docx").Selected.EndKey Unit:=wdStory, Extend:=wdMove"

Sub exceltoword()

Dim objWord As Object

Set objWord = CreateObject("Word.Application")
objWord.Visible = True
objWord.Documents.Open "C:\Users\WORK\Desktop\letters.docx"
objWord.Activate
Set objSelection = objWord.Selection

'**MOVE TO END OF DOCUMENT BEFORE ADDING NEW PAGE**
'tried objSelection.EndKey Unit:=wdStory, Extend:=wdMove --- does not work
'tried objWord.Documents("letters.docx").Selected.EndKey Unit:=wdStory, Extend:=wdMove --- does not work
objSelection.InsertNewPage

objWord.Application.Quit
Set objWord = Nothing

End Sub

【问题讨论】:

标签: excel vba ms-word


【解决方案1】:

您的问题是您使用后期绑定的结果,声明 objWord As Object 而不是设置对 Word 对象库的引用。

使用后期绑定时,您不能使用 Word 对象库中的枚举或常量,因为 Excel 不知道它们代表什么。您要么必须自己声明这些常量,要么使用它们的基础值。

实际上,在这种情况下使用后期绑定几乎没有价值。后期绑定的唯一优势是版本独立性,即您可以在较新的版本中编写代码,并且理论上它可以在较旧的版本中工作。但是,除非您还对主机应用程序代码使用后期绑定,否则这种优势就会丧失,因为 Office 通常作为包安装。使用其他 Office 应用程序时最好使用早期绑定,并为其他常用库保留后期绑定,例如ADO 或 XML。

如果您想了解有关后期绑定的更多信息,请参阅https://rubberduckvba.wordpress.com/2019/04/28/late-binding/

我还注意到您没有在代码模块的顶部使用 Option Explicit,因为您的代码包含未声明的变量。要将其自动添加到新模块中,请打开 VBE 并转到工具 |选项。在“选项”对话框中,确保选中“要求变量声明”。

您还应该改掉使用Selection 的习惯。使用 VBA 时很少需要选择任何内容。

因此,您的代码应类似于以下内容:

Sub exceltoword()
    Dim wdApp As Word.Application
    Set wdApp = CreateObject("Word.Application")
    wdApp.Visible = True
    Dim wdDoc As Word.Document
    Set wdDoc = wdApp.Documents.Open("C:UsersWORKDesktopletters.docx")
    wdDoc.Characters.Last.InsertBreak Type:=wdPageBreak
    wdApp.Quit
    Set wdApp = Nothing
End Sub

【讨论】:

    猜你喜欢
    • 2018-07-05
    • 2014-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多