web-dev-qa-db-ja.com

選択したシートをPDFにエクスポートするExcel VBA

次のコードを使用して、選択したシートをExcel 2010から単一のpdfファイルにエクスポートしています...

ThisWorkbook.Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select

ActiveSheet.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:="C:\temp.pdf", _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=True

私の問題は、最初のシートのみをエクスポートすることです。何か案は?

18
thistledownjohn

シートのグループを選択したら、Selectionを使用できます

考慮してください:

Sub luxation()
    ThisWorkbook.Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select
    Selection.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:="C:\TestFolder\temp.pdf", _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
End Sub

編集#1:

さらにテストを行ったところ、この手法は各ワークシートのセルのグループselectedに依存していることがわかりました。包括的な出力を取得するには、次のようなものを使用します。

Sub Macro1()

   Sheets("Sheet1").Activate
   ActiveSheet.UsedRange.Select
   Sheets("Sheet2").Activate
   ActiveSheet.UsedRange.Select
   Sheets("Sheet3").Activate
   ActiveSheet.UsedRange.Select

   ThisWorkbook.Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select
   Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
      "C:\Users\James\Desktop\pdfmaker.pdf", Quality:=xlQualityStandard, _
      IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
      True
End Sub
27
Gary's Student

私はこれについてかなり混乱しています。また、Excel 2010を実行しています。2つのシートを1つのPDFとして保存してみました:

    ThisWorkbook.Sheets(Array(1,2)).Select
    **Selection**.ExportAsFixedFormat xlTypePDF, FileName & ".pdf", , , False

しかし、空白のページしかありませんでした。両方のシートを保存しましたが、何も保存しませんでした。それは私が使用するまでではありませんでした:

    ThisWorkbook.Sheets(Array(1,2)).Select
    **ActiveSheet**.ExportAsFixedFormat xlTypePDF, FileName & ".pdf", , , False

両方のシートを含む単一のPDF=ファイルがあります。

[オプション]ダイアログの[選択]を使用してこれら2つのページを手動で保存して、選択した2つのシートを保存しようとしましたが、空白のページが表示されました。 Active Sheet(s)オプションを試してみたところ、欲しいものが手に入りました。これをマクロとして記録すると、ExcelはPDFの発行に成功したときにActiveSheetを使用しました。何が得られますか?

8
asp8811

これは、@ asp8811の回答に問題があったために思いついたものです(おそらく自分の問題)

'これはPDFの最初の2枚のシートを配置します'各wsは印刷のために改ページで制御する必要があることに注意してください 'これはPDFを現在のディレクトリに明示的に配置します

Sub luxation2()
    Dim Filename As String
    Filename = "temp201"



Dim shtAry()
ReDim shtAry(1) ' this is an array of length 2
For i = 1 To 2
shtAry(i - 1) = Sheets(i).Name
Debug.Print Sheets(i).Name
Next i
Sheets(shtAry).Select
Debug.Print ThisWorkbook.Path & "\"


    ActiveSheet.ExportAsFixedFormat xlTypePDF, ThisWorkbook.Path & "/" & Filename & ".pdf", , , False

End Sub
4
HattrickNZ