问题描述
我要运行的代码在excel vba中,应该打开一个word文档,然后将其打印出来,然后关闭该文档。由于某种原因,该代码似乎还没有完成将文档发送到打印机的操作,但是仍然关闭。因此,代码运行完毕,并且不会生成错误消息,但是没有任何内容可以打印。
当我逐步运行代码时,文档确实可以打印。我尝试添加:Application.Wait(Now + TimeValue(“ 0:00:05”))给它工作的时间。如果程序告诉单词而不是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方法,但是有一种更好的方法,因为您永远无法保证文档处于5-10秒阈值内的打印状态。
PrintOut方法基本上有一个参数,您可以添加一个名为Background的参数。此参数的默认值为True,这意味着打印在后台进行,并且代码继续运行,这导致您的文件在完成打印功能之前关闭。在这种情况下,如果将Background参数的值设置为False,则在完成打印之前,宏将不再接受任何指令。
尝试将PrinOut行更改为以下内容,看看是否有帮助:
objDoc.PrintOut Background:=False