1

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

Excel 2013 在 VBA 中打印为 PDF

它产生

运行时错误 1004

wb.ExportAsFixedFormat

我的 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
4

5 回答 5

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
于 2013-06-29T20:02:50.873 回答
0

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

于 2017-01-10T09:57:25.497 回答
0

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

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

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

解决方法:用合法字符替换非法字符,例如'_'。

于 2018-07-04T22:40:38.933 回答
0

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

xlName = Range("CustomerName").Value xlName = Application.WorksheetFunction.Clean(xlName)

于 2020-07-22T07:36:11.597 回答
-1

好的,我又玩了一些,如果我从文件名规范中删除“.pdf”,我不会收到错误 1004。

于 2018-09-18T21:25:23.193 回答