使用Sendkeys解释变量文件名,从Excel打印到PDF

时间:2018-03-21 15:24:42

标签: vba sendkeys printdocument

我试过整个搜索但找不到明确的答案。相反,人们只提出类似问题的替代方案,但不是正确答案。

我的excel版本是2010年。

我需要将多个excel文件中的多个页面打印到单个PDF文件中,这是我已经准备好的代码。我面临的唯一问题是下面的部分,我需要将打印发送到保存的PDF文件。除非我输入文件名并单击“保存”,否则代码不会向前移动。

相关代码如下

Sub printout()

ActiveSheet.printout ActivePrinter:="Adobe PDF on Ne00:", From:=1, To:=1

SendKeys (Variable & ".pdf")

SendKeys "{Enter}"

End Sub

这里发生的是代码的第一行打开"保存PDF文件为"对话框。此后,我无法执行Sendkeys方法输入文件名,然后单击“保存/输入”。 我希望通过VB宏代码实现哪些目标,这也是我的问题?

我也试过以下

ActiveSheet.printout ActivePrinter:="Adobe PDF Son Ne00:", From:=1, To:=1, PrintToFile:=True, PrToFileName:="Path\PDFs\1.pdf"

但是这给了我一个Post Script错误

"创建PostScript文件时,必须依赖系统字体并使用文档字体。请转到打印机属性,Adobe PDF设置页面,然后关闭仅依赖系统字体的选项;不要使用文档字体。"

Error Screenshot

如果我根据文件保存的错误消息更改PDF设置,但它会保存一个损坏的文件,当我打开保存的PDF文件时,该文件为空白。

我也试过了exporttoPDF方法,但是它给了我其他不同的问题,其中一个是关于纸张大小的,这完全是一个不同的问题,不会在这里包含它。我尝试了各种技术来解决纸张尺寸问题,但没有解决我的问题。只包括引用,以便没有人建议exporttoPDF替代。

我需要用.printout方法解决这个问题,而且现在它已成为一个理解问题,我必须了解如何解决它。

在上面的代码运行时,在“另存为”对话框中,如果我手动输入文件名并单击“保存”,则一切正常。它只是sendkeys部分,我无法弄清楚自动输入文件名并单击保存。仅使用 .PRINTOUT

需要解决方案

如有任何其他详细信息,请通知我。

0 个答案:

没有答案