web-dev-qa-db-ja.com

特定のシートをPDF

エンドユーザーがいくつかの選択を行うExcelブックがあり、それに基づいて、単一のPDFとして保存する必要のあるシートが、このようにシート1、セルB10(E1、E2、E3、E4 .. .. )

以下でこのマクロを試しましたが、正しく機能しません。理由はコードの下にあります。

Sub pdff()

   Sheets("E1").Activate
   ActiveSheet.UsedRange.Select
   Sheets("E2").Activate
   ActiveSheet.UsedRange.Select
   Sheets("E3").Activate
   ActiveSheet.UsedRange.Select

   ThisWorkbook.Sheets(Array("E1", "E2","E3")).Select
   Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
      "C:\Users\Damon\Desktop\pdfmaker.pdf", Quality:=xlQualityStandard, _
      IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
      True
End Sub

コードの問題:

  • コードの実行後、シートをグループ化します。手動でグループ化を解除する必要があります。
  • コードは、設定された印刷領域の外側の領域を保存します(各シートをPDFとして手動で保存した場合は発生しません)
  • コードは動的ではなく、セルB10からシート名を取得しません
2
Firee

と:

enter image description here

このバージョンは、すべての目標を満たします。

Sub pdff()
    Dim s As String, ary, a, sh As Worksheet

    Set sh = ActiveSheet
    s = Sheets("Sheet1").Range("B10").Text
    ary = Split(s, ",")

    For Each a In ary
        Sheets(a).Select
        Sheets(a).Activate
        Sheets(a).Range(ActiveSheet.PageSetup.PrintArea).Select
    Next a

    ThisWorkbook.Sheets(ary).Select

    Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Users\Damon\Desktop\pdfmaker.pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        True

    sh.Select
End Sub

Sheet1E1シートがあることを確認してください。

1
Gary's Student