【问题标题】:My vba code closes a document before the print command can be executed我的 vba 代码在执行打印命令之前关闭了一个文档
【发布时间】:2020-08-12 00:46:57
【问题描述】:

我试图运行的代码在 excel vba 中,它应该打开一个 word 文档打印它然后关闭文档。由于某种原因,代码似乎没有完成将文档发送到打印机,但它仍然关闭。因此代码运行完成并且不会生成错误消息,但没有任何内容可以打印。

当我逐步运行代码时,文档确实可以打印。我尝试添加: Application.Wait(Now + TimeValue("0:00:05")) 给它时间工作。我尝试了该行的另一种形式,以防程序告诉 word 等待而不是 excel:Excel.Application.Wait(Now + TimeValue("0:00:05"))。我也尝试过让时间等待 10 秒而不是 5 秒。

任何帮助都会很棒

If ENG28 = "" Then
Else
  Set objWord = CreateObject("Word.Application")
  Set objDoc = objWord.Documents.Open(ENG28)
  objWord.Visible = True

  objDoc.PrintOut 
  Application.Wait(Now + TimeValue("0:00:05"))
  objWord.Quit 0
End If

【问题讨论】:

  • 打印作业通常需要一分钟才能完成。作为 Wait 的替代方案,请查看 Sleep 和 DoEvents 循环,其中一个可能更适合您的应用程序。

标签: excel vba printing ms-word


【解决方案1】:

我看到您使用了 .Wait 方法,但是有更好的方法,因为您永远无法保证您的文档在 5-10 秒的阈值内处于打印状态。

PrintOut 方法基本上有一个参数,您可以添加名为 Background。此参数的默认值为 True ,这意味着打印发生在后台并且代码继续运行,这导致您的文件在完成打印功能之前关闭。在这种情况下,如果将 Background 参数值设置为 False,则宏在打印完成之前将不再执行任何指令。

尝试将 PrinOut 行更改为以下内容,看看是否有帮助:

objDoc.PrintOut Background:=False

【讨论】:

  • 工作就像一个魅力!非常感谢!
猜你喜欢
  • 1970-01-01
  • 2011-06-16
  • 2011-08-10
  • 1970-01-01
  • 2018-07-17
  • 1970-01-01
  • 1970-01-01
  • 2014-04-10
  • 2013-07-05
相关资源
最近更新 更多