2017-07-10 7 views
0

マクロを作成して各テーブルを独自のPDFにエクスポートできますが、各テーブルを独自のページに1つのPDF ?VBAを使用してワークシート内の各テーブルを1つのPDF内の別々のページにエクスポート

Range("B2:C5").Select 
ActiveSheet.PageSetup.PrintArea = "$B$2:$B$5" 
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
    "C:\Users\Lenovo\Documents\Book1.pdf", Quality:=xlQualityStandard, _ 
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ 
    True 
Range("B2:C6").Select 

すべての提案が高く評価されました。

答えて

1

私は数年前にPDFをマージして遊んでいました。私が選んだPDFを1つにまとめたものをまとめました。

これは私のコードのマージ一部であり、あなたがあなたのニーズに適合させる必要があります:

Sub MergePDFs() 
Dim a As Variant, i As Long, n As Long, ni As Long, p As String 
Dim AcroApp As New Acrobat.AcroApp, PartDocs() As Acrobat.CAcroPDDoc 

MyPath = Range("G1").Text 
DestFile = Range("G2").Text 
MyFiles = Join(WorksheetFunction.Transpose(Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)), ",") 

    If Right(MyPath, 1) = "\" Then p = MyPath Else p = MyPath & "\" 
    a = Split(MyFiles, ",") 
    ReDim PartDocs(0 To UBound(a)) 

    On Error GoTo exit_ 
    If Len(Dir(p & DestFile)) Then Kill p & DestFile 
    For i = 0 To UBound(a) 
    ' Check PDF file presence 
    If Dir(p & Trim(a(i))) = "" Then 
     MsgBox "File not found" & vbLf & p & a(i), vbExclamation, "Canceled" 
     Exit For 
    End If 
    ' Open PDF document 
    Set PartDocs(i) = CreateObject("AcroExch.PDDoc") 
    PartDocs(i).Open p & Trim(a(i)) 
    If i Then 
     ' Merge PDF to PartDocs(0) document 
     ni = PartDocs(i).GetNumPages() 
     If Not PartDocs(0).InsertPages(n - 1, PartDocs(i), 0, ni, True) Then 
     MsgBox "Cannot insert pages of" & vbLf & p & a(i), vbExclamation, "Canceled" 
     End If 
     ' Calc the number of pages in the merged document 
     n = n + ni 
     ' Release the memory 
     PartDocs(i).Close 
     Set PartDocs(i) = Nothing 
    Else 
     ' Calc the number of pages in PartDocs(0) document 
     n = PartDocs(0).GetNumPages() 
    End If 
    Next 

    If i > UBound(a) Then 
    ' Save the merged document to DestFile 
    If Not PartDocs(0).Save(PDSaveFull, p & DestFile) Then 
     MsgBox "Cannot save the resulting document" & vbLf & p & DestFile, vbExclamation, "Canceled" 
    End If 
    End If 

exit_: 

    ' Inform about error/success 
    If Err Then 
    MsgBox Err.Description, vbCritical, "Error #" & Err.Number 
    ElseIf i > UBound(a) Then 
    MsgBox "The resulting file is created:" & vbLf & p & DestFile, vbInformation, "Done" 
    End If 

    ' Release the memory 
    If Not PartDocs(0) Is Nothing Then PartDocs(0).Close 
    Set PartDocs(0) = Nothing 

    ' Quit Acrobat application 
    AcroApp.Exit 
    Set AcroApp = Nothing 

End Sub 

メモリから私は私のマージツールで、このルーチンを書いていないが、私はどこ覚えていないこと私は元のコーダーを信用できないように私はそれを得た。

+1

ありがとう、これは私に今夜の出発点です。 – user2956578

+1

私はこれで今遊んできました。私は自分のライブラリに追加しています。ありがとう! – user2956578

2

各シートPageSetupを設定したら、ブックをエクスポートします。

Sub test() 

    Dim WB As Workbook, Ws As Worksheet 
    Dim myFn As String 
    Set WB = ThisWorkbook 
    For Each Ws In Worksheets 
     Ws.PageSetup.PrintArea = "$B$2:$B$5" 
    Next Ws 
    myFn = WB.Path & "\" & "test.pdf" 

    WB.ExportAsFixedFormat xlTypePDF, myFn 
End Sub 
+0

これはおかげさまで、演奏して数分後に私は別のワークシートにイベントテーブルを配置し、コードを使用してスプレッドシートを改造しました...これは間違いなく、現在より強力なソリューションであり、 – user2956578

関連する問題