【问题标题】:Save visible sheets to pdf, ignore hidden sheets将可见工作表保存为 pdf,忽略隐藏工作表
【发布时间】:2016-09-20 17:19:19
【问题描述】:

我录制了一个宏。

如果所有工作表都可见,则它可以工作,但是当我隐藏工作表时,它不会保存为 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

【问题讨论】:

    标签: excel pdf vba


    【解决方案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
    

    【讨论】:

    • 感谢 tim,但它所做的只是保存标题页。
    • 尝试注释掉 Sheets("TITLE").Activate 行
    • 对不起,蒂姆,我真的是这个领域的初学者,“注释掉表格(“TITLE”).Activate”是什么意思?
    • 伟大的蒂姆先生,我在搜索中找到了它,在注释掉该行之后,它就像我正在寻找的一样工作正常。非常感谢。
    【解决方案2】:

    这可能是由于使用了.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
    

    【讨论】:

    • OP 希望将工作表导出为单个 PDF - 为此需要 Select
    • @TimWilliams - 哦,真的吗?这是第一个(我记得)需要.Select 的地方。为什么我不能只添加sht.Select 并用ActiveSheet.ExportAs... 替换sht.ExportAs...?这也会给我带来一个错误。
    • @TimWilliams - Workbook.ExportAsFixedFormat 跳过隐藏的表格(至少在 2013 年)。见this answer
    • @bruce hi bruce 它的作用是保存复选框和其他表单所在的主页。实际上我试图避免打印主页。谢谢!
    • "@TimWilliams - Workbook.ExportAsFixedFormat 跳过隐藏的工作表(至少在 2013 年)。请参阅此答案。- Comintern" 此链接解决了我的问题,感谢 Comintern!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    • 2023-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-23
    相关资源
    最近更新 更多