我的vba代码在执行打印命令之前先关闭文档

问题描述

我要运行的代码在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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...