我尝试使用以下解决方案从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
答案 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)