2016-09-20 46 views
-1

我录制了一个宏。将可见表单保存为pdf,忽略隐藏表单

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

回答

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 
+1

OP希望张导出到一个单一的PDF - 的'选择'是必需的。 –

+0

@TimWilliams - 哦,真的吗?这是第一个(我可以记得),其中'.Select'是必需的。为什么我不能只添加'sht.Select'并用'ActiveSheet.ExportAs ...'替换'sht.ExportAs ...'?这也给我一个错误。 – BruceWayne

+0

@TimWilliams - 'Workbook.ExportAsFixedFormat'跳过隐藏表格(至少在2013年)。请参阅[本答案](https://stackoverflow.com/a/36107539/4088852)。 – Comintern

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 
+0

感谢蒂姆,但它所做的只是保存标题页。 – RHON

+0

尝试评论表格(“TITLE”)。激活行 –

+0

我很抱歉蒂姆,我真的是这个领域的初学者,你是什么意思,“评论表格(”标题“)。 – RHON