我正在尝试为部分工作表中的每个工作表创建单独的PDF,其名称由工作表名称和一个单元格的内容确定。
我面临的问题是创建并正确命名了单独的PDF,但是,PDF包含所有选定的工作表,而不是一个。
我正在使用的代码如下:
Sub SaveWorksheetsAsPDFs()
Dim sFile As String
Dim sPath As String
Dim sh As Object
Dim InvDate As String
With ActiveWorkbook
sPath = .Path & "\"
For Each sh In ActiveWindow.SelectedSheets
InvDate = Format(Range("G9"), "dd-mm-yy")
sFile = sh.Name & " - Invoice - " & InvDate & ".pdf"
sh.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=sPath & sFile, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=False, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Next sh
End With
End Sub
我对VBA经验不足,不确定自己做错了什么。希望能有所帮助。预先感谢。
答案 0 :(得分:2)
根据我的经验,我发现ExportAsFixedFormat
总是导出所有选定的工作表。
您可以在sh.Select
之后说For Each
来解决这个问题,然后按照您在OP中的描述进行操作。
修改后的代码:
Sub SaveWorksheetsAsPDFs()
Dim sFile As String
Dim sPath As String
Dim sh As Object
Dim InvDate As String
With ActiveWorkbook
sPath = .Path & "\"
For Each sh In ActiveWindow.SelectedSheets
sh.Select '<----- New LINE
InvDate = Format(Range("G9"), "dd-mm-yy")
sFile = sh.Name & " - Invoice - " & InvDate & ".pdf"
sh.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=sPath & sFile, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=True, _
OpenAfterPublish:=False
Next sh
End With
End Sub
希望这可以帮助您实现目标。 :)