尝试通过网络驱动器中的Excel在宏中另存为PDF时出现错误1004

时间:2019-05-26 21:17:47

标签: excel vba

提前道歉,因为我对此很陌生,发现这是一条非常陡峭的学习曲线!

我有一个本人和同事使用的Excel文档,并且具有一个宏按钮将其另存为PDF文档。 PDF需要保存在网络驱动器上的文件夹中,然后是Year文件夹,然后是month文件夹。

我有一些非常适合我的代码。如果不存在,则创建一个新年文件夹,如果不存在,则创建一个月份文件夹,然后将PDF保存在该文件夹中。

但是,这仅对我有用。

当同事尝试在其计算机上执行此操作时,Excel将创建文件夹,但不会保存PDF,从而导致运行时错误1004。

我试图更改代码中的点点滴滴,但似乎没有任何效果,所以我确实处于一个位置。

这是我目前的代码:

    Sub Save_ActSht_as_Pdf()
    ' Saves active sheet as PDF file.
    Const basePath = "I:\folder path\"
    If Dir(basePath & Year(Date), vbDirectory) = "" Then MkDir basePath & Year(Date)
    If Dir(basePath & Format(Date, "yyyy\\mmmm yy"), vbDirectory) = "" Then MkDir basePath & Format(Date, "yyyy\\mmmm yy")
    ActiveSheet.ExportAsFixedFormat xlTypePDF, Format(Now, "yyyy\\mmmm yy\\ddd MMMM d yyyy AM/PM"), Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub

(为方便起见,我已将实际文件夹路径替换为“文件夹路径”)

在调试过程中突出显示的行是从ActiveSheet开始的行

预先感谢您提供有关此问题的帮助。

1 个答案:

答案 0 :(得分:0)

这对我有用。

Option Explicit

   Sub Save_ActSht_as_Pdf()
    ' Saves active sheet as PDF file.
    Const basePath = "C:\folder path\"
    Dim fn As String
    If Dir(basePath & Year(Date), vbDirectory) = "" Then MkDir basePath & Year(Date)
    If Dir(basePath & Format(Date, "yyyy\\mmmm yy"), vbDirectory) = "" Then MkDir basePath & Format(Date, "yyyy\\mmmm yy")
    fn = basePath & Format(Now, "yyyy\\mmmm yy\\ddd MMMM d yyyy AM/PM") & ".pdf"
    ActiveSheet.ExportAsFixedFormat xlTypePDF, Filename:=fn, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True

End Sub

我必须手动创建“文件夹路径”文件夹,因为MkDir一次只能创建一个文件夹级别。

如果ActiveSheet为空,则会发生运行时错误1004,因为没有内容可打印