2016-09-20 17 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'を追加して' sht.ExportAs ... 'を' ActiveSheet.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

関連する問題