将可见工作表保存为pdf,忽略隐藏工作表

时间:2016-09-20 17:19:19

标签: excel excel-vba pdf vba

我录制了一个宏。

如果所有工作表都可见,但是当我隐藏工作表时,它将无法保存为pdf。

这是代码。

Sub save_pdf() 
' 
' save_pdf Macro 
'

' 
Sheets(Array("TITLE", "CML", "CLUSTER", "ORS", "MOBILE", "YPS", "DEVICES", "PORTS")).Select 
Sheets("TITLE").Activate
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, fileName:= _ Sheets("MAIN").Range("customer_name") + " - Project Initiation_ Document.pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True,_ IgnorePrintAreas:=False, OpenAfterPublish:=True 

Sheets("MAIN").Select

End Sub

2 个答案:

答案 0 :(得分:1)

这样的事情:

Sub ExportVisible()
    Dim shts, sht As Worksheet, s, i As Long


    shts = Array("TITLE", "CML", "CLUSTER", "ORS", "MOBILE", "YPS", "DEVICES", "PORTS")
    i = 0

    For Each s In shts
        Set sht = ActiveWorkbook.Sheets(s)
        If sht.Visible = xlSheetVisible Then
            i = i + 1
            sht.Select (i = 1) '"replace" parameter true when i=1
        End If
    Next s

    'Sheets("TITLE").Activate '<<EDIT: remove this

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
                  Filename:=Sheets("MAIN").Range("customer_name").Value & _
                  " - Project Initiation_Document.pdf ", _
                  Quality:=xlQualityStandard, IncludeDocProperties:=True, _
                  IgnorePrintAreas:=False, OpenAfterPublish:=True

End Sub

答案 1 :(得分:0)

这可能是由于使用了.Select。我们希望尽可能avoid using .Select。相反,只需设置一个循环来遍历工作簿中的每个工作表。

Sub save_PDFs()
Dim sht As Worksheet
For Each sht In ActiveWorkbook.Worksheets
    sht.ExportAsFixedFormat Type:=xlTypePDF, fileName:=Sheets("MAIN").Range("customer_name") + " - Project Initiation_ Document.pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
Next sht
End Sub

但是,如果您只想要可见的工作表,请执行以下操作:

Sub save_PDFs()
Dim sht As Worksheet
For Each sht In ActiveWorkbook.Worksheets
    If sht.Visible = True Then sht.ExportAsFixedFormat Type:=xlTypePDF, fileName:=Sheets("MAIN").Range("customer_name") + " - Project Initiation_ Document.pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
Next sht
End Sub
相关问题