2015-04-07 141 views
0

我目前正尝试使用一个按钮将Excel文档另存为.xls和PDF。它工作了一下,但现在它给了我一个错误消息,并突出显示ActiveSheet.ExportAsFixedFormat开始的行。如果我把它拿出来,然后突出显示MsgBox行显示一个问题。我想知道这是否是由这个函数中有3个命令引起的?将Excel导出为PDF时出现1004错误

Sub Rectangle1_Click() 
Dim Path As String 
Dim FileName1 As String 
Dim FileName2 As String 
Path1 = "FILE_PATH_IS_HERE" 
Path2 = "FILE_PATH_IS_HERE" 
FileName1 = Range("J7") 
FileName2 = Range("G3") 
ActiveWorkbook.SaveAs Filename:=Path1 & FileName1 & FileName2 & ".xls", FileFormat:=xlNormal 

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Path2 & FileName1 & FileName2, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False 

MsgBox "Invoice Saved As Excel Doc and PDF.", , "I Systems" 

感谢您提前提供的所有帮助!

+0

它会告诉你什么错误? –

+0

运行时错误'1004':应用程序定义或对象定义的错误。谢谢! – tbowden

+0

表单是否受到保护?发生错误时,“FileName1”和“FileName2”的值是什么? –

回答

0
'Don't work 
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=".\FOLDER\fileName.pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False 

由于是相对路径与\

如下面Application.ActiveWorkbook.Path

'work 
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Application.ActiveWorkbook.Path+"\FOLDER\fileName.pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False 
0

我有一个类似的问题,您必须是绝对路径和上面的答案对我不起作用。一小时后,我的头发拉出,这是我的问题的来源。

我传递一个单元格值作为生成文件名的一部分。我这样做的格式为fileName:= ActiveWorkbook.Path &“\”& CStr(Workbooks.Cells(i,j).Value)&“.pdf”。单元格本身的文本被格式化为两行(即“顶行文本”+(Alt + K)+“底行文本”)。虽然在Debug.print,MsgBox或值预览中该字符串看起来很正常,但我认为有一个隐藏字符可以编码单元格的新行。我相信这个隐藏的字符在作为fileName参数的一部分传递时会导致错误。我猜Excel没有选择它,但操作系统的文件名系统。

无论如何,这解决了我的问题。祝你好运,这是一个令人沮丧的解决办法!

+1

)请不要在多个问题上发布相同的答案,发布一个好答案,然后投票/标记以关闭其他问题作为重复。如果问题不重复,*定制您的问题答案。 –