Excel:要打印到PDF的VBA - 运行时错误1004

时间:2013-06-29 11:28:03

标签: excel-vba vba excel

我尝试使用以下解决方案从Excel打印到PDF:

Excel 2013 Print to PDF in VBA

虽然该解决方案似乎对其他人有用,但在我的情况下会产生运行时错误1004。有没有人有任何进一步的想法,为什么这可能是?我搜索过aroudn但仍然无法弄清楚原因是什么?可能是我的Excel版本不同(我使用2007年)?

我对原始解决方案所做的唯一改进是更改文件路径,以便保存到我的桌面。我的代码如下:

Sub Invoice_to_PFD()
      'Saves the invoice print area to a PDF file

       Dim fp As String
       Dim wb As Workbook

       fp = "C:\desktop\NewInvoice.pdf"
       Set wb = ActiveWorkbook

       wb.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fp, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True

End Sub

5 个答案:

答案 0 :(得分:1)

所以现在这是Windows用户的工作代码(Mac OS可能需要调整文件路径):

Sub Invoice_to_PDF()
'Saves the invoice print area to a PDF file

Dim fp As String
Dim wb As Workbook
Dim ws As Worksheet

fp = "C:\Users\[username]\Desktop\NewInvoice.pdf"
Set wb = ActiveWorkbook
Set ws = Worksheets("Invoice")

ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fp, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True


End Sub

答案 1 :(得分:0)

如果要导出的工作表不包含任何数据,则导出失败。我在MrExcel论坛上找到了这个解决方案,有人似乎偶然发现了答案!

答案 2 :(得分:0)

此错误的另一个原因是文件名包含非法字符,例如:

  • <(小于)
  • >(大于)
  • :(冒号)
  • ”(双引号)
  • /(正斜杠)
  • \(反斜杠)
  • | (垂直条或管)
  • ? (问号)
  • *(星号)

请参见此处的“命名约定”:https://docs.microsoft.com/en-us/windows/desktop/fileio/naming-a-file

解决方案::将合法字符替换为合法字符,例如“ _”。

答案 3 :(得分:0)

好的,我只是和我一起玩了一些,如果我从文件名规范中删除“ .pdf”,则不会出现错误1004。

答案 4 :(得分:0)

我必须使用clean函数删除文件名变量中的换行符:

xlName = Range(“ CustomerName”)。Value xlName = Application.WorksheetFunction.Clean(xlName)