提前道歉,因为我对此很陌生,发现这是一条非常陡峭的学习曲线!
我有一个本人和同事使用的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开始的行
预先感谢您提供有关此问题的帮助。
答案 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,因为没有内容可打印