2016-09-20 49 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