使用VBA PrintOut方法将工作表转换为PDF

时间:2017-04-16 13:07:43

标签: excel vba excel-vba sharepoint pdf-generation

我正在尝试使用PrintOut方法使用VBA宏将特定工作表转换为PDF。我希望在运行宏时,活动工作表将转换为PDF并保存到SharePoint上的特定位置,其文件名与工作簿的文件名相同。

我有以下代码:

Target_File_Draft = ActiveSheet.Range("AJ21").Value & "\" & ActiveSheet.Range("AJ24").Value

*'Cell AJ21 contains the path to the SharePoint folder and AJ24 contains the name of the file. So Target_File_Draft takes on a value like: https://contoso.sharepoint.com/Site/ABClibrary/ABCFolder/FileXYZ.pdf*

' Print Draft Report

ActiveSheet.PrintOut ActivePrinter:="Microsoft Print to PDF", PrintToFile:=True, PrToFileName:=Target_File_Draft

当我运行这个宏时,我得到了

  

运行时错误1004:由于错误导致无法打印您的文件   Microsoft在e01上打印到PDF

有几个可能的原因:

  • 可能没有足够的可用内存。尝试关闭文件等
  • 如果您使用网络进行打印,则网络可能存在问题等

我不认为这两个原因中的任何一个都适用于我的情况。

我做了一些调查,问题与PrToFileName属性有关。看来我将这个值传递给这个变量是不对的。有没有人知道如何在使用printout方法时指定文件路径和文件名?

我正在使用Windows 10,从Excel 2016运行宏,处理SharePoint Online上的工作簿并尝试将PDF保存回SharePoint Online。

PS :由于其他限制(我们无法使用数字版权管理),我无法在宏中使用“另存为pdf”或“导出为pdf”方法。

1 个答案:

答案 0 :(得分:0)

ActiveSheet.ExportAsFixedFormat类型:= xlTypePDF,文件名:= ActiveWorkbook.Path& " \" &安培;桌面和桌面" Monthly.pdf",质量:= xlQualityStandard,IncludeDocProperties:= True,IgnorePrintAreas:= False,OpenAfterPublish:= True