创建所选Excel工作表的pdf

时间:2018-07-16 05:29:43

标签: excel-vba

我正在尝试为部分工作表中的每个工作表创建单独的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经验不足,不确定自己做错了什么。希望能有所帮助。预先感谢。

1 个答案:

答案 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

希望这可以帮助您实现目标。 :)