【问题标题】:Switching between two newly created Word Documents through Excel Vba is not happening没有通过 Excel Vba 在两个新创建的 Word 文档之间切换
【发布时间】:2021-01-27 20:08:56
【问题描述】:

我通过 Excel vba 创建了两个新的 Word 文档,尚未保存。文档被创建为“Document1”和“Document2”。当我尝试在文档之间切换时,我收到 Document2 的错误文件名错误 4160。请帮我解决这个问题。

Sub DocSwitch()

Dim s As Object

Set s = Word.Application.Selection

Documents("Document1").Select

s.TypeText Text:="Hello"

Documents("Document2").Select

s.TypeText Text:="Hi"


End Sub

【问题讨论】:

  • Set s = Word.Application.Selection - 执行此操作后,s 指向该行运行时选择的任何内容,并且在您选择其他内容时不会动态更新。如果您激活其他文档,则需要重复该行。
  • 嗨蒂姆威廉姆斯,程序没有进入第二个 s.TypeText,它在 Documents("Document2") 上给出了错误的文件名错误。
  • 您在哪一行得到错误?您的文档是否可能位于不同的 Word 实例中?
  • 此外,您为什么要将焦点从一个文档切换到另一个文档并使用 Select?您可以直接处理任一文档而无需这样做。例如:stackoverflow.com/questions/56251088/…stackoverflow.com/questions/61051991/… & stackoverflow.com/questions/64853079/…
  • Tim Williams:我收到错误行“Documents("Document2").Select”。它们是从同一个 Excel 文件的两个不同宏创建的。正如查尔斯所说,将文档变量分配给每个新文档解决了这个问题。 macropod:我是 vba 和学习的新手..,感谢您提供宝贵的链接。

标签: excel vba ms-word


【解决方案1】:

创建文档时,将它们分配给文档变量。

Dim WordApp as application
Set WordApp = Word
Dim MyDoc1 as Document
Dim MyDoc2 as Document

Set MyDoc1 = WordApp.Documents.Add
Set MyDoc2 = WordApp.Documents.Add

上面的代码只是在这里即时输入的,可能需要一些调整,但应该会给你一些想法。然后,在您的代码中,使用您的变量来引用特定的文档。

因此,与其引用 Documents(Document1),不如引用 MyDoc1。

【讨论】:

  • 谢谢查尔斯。太棒了。它解决了我的问题。
猜你喜欢
  • 2023-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-25
  • 1970-01-01
  • 1970-01-01
  • 2017-03-17
  • 1970-01-01
相关资源
最近更新 更多