2017-09-20 9 views
2

レポートを生成するには、以下の方法でpdfを作成します。 ActiveSheet,が指定された印刷領域で新しいページセクションに最初に存在したPDFファイルの末尾に印刷領域の内容を追加する(追加)

ActiveSheet.ExportAsFixedFormat _ 
    Type:=xlTypePDF, _ 
    fileName:=ThisWorkbook.path & "\rep.pdf", _ 
    Quality:=xlQualityStandard, _ 
    IncludeDocProperties:=True, _ 
    IgnorePrintAreas:=False, _ 
    OpenAfterPublish:=False 

、魔女は表が含まれているので、テーブルの列にフィルタリングされた値は、プログラムの変更があり、必要性:

は私が印刷領域の新しい顔をしたいという変更することで改革フィルタリング基準。最初のpdfファイルの最後に、新しいpdfファイルを作成せずに、の新しいページセクションに静かに追加してください。

どうすればいいですか?

システムにADOBE Acrobat Professionalをインストールし、VBAリファレンスに適切な参照を追加できました。

+1

どのようにyのでしょうプログラムではなく手動で行う必要がある場合はどうすればいいですか? – braX

+0

ワークブック用のVBAベースのアプリケーションを準備しています。これは、プログラムでアクトを実行する必要があります。 – mgae2m

+0

私は自分のシステムにAdobe Acrobat Professionalを持っていて、魔法のリファレンスにはVBAリファレンスを追加する必要があるので、関連する機能が含まれていると教えてください。 – mgae2m

答えて

1

解決策では、Acrobat Proの必要はありません。 Table2という名前のテーブルがあるとします。 また、HidenでHelpという名前のヘルプシート(フィルタリングされたテーブルを保存する)があります。

Option Explicit 

Sub print_to_pdf() 
    Dim sh As Long 
    Dim rg As Range 
    Dim Rng As Range 
    Dim rw As Range 

    Application.ScreenUpdating = False 

    For Each rw In Range("Table2[#All]").Rows 

     If rw.EntireRow.Hidden = False Then 
      If Rng Is Nothing Then Set Rng = rw 
      Set Rng = Union(rw, Rng) 
     End If 

    Next 

    Rng.Copy 

    With Sheets("help") 
     .Visible = True 
     sh = .Cells(Rows.Count, "A").End(xlUp).Row + 2 
     Set rg = Range("a3" & ":" & "a" & sh - 2) 

     .Activate 
     .Cells(sh, "A").Select 
     ActiveSheet.Paste 

     ActiveSheet.PageSetup.PrintArea = rg 

     ActiveSheet.ExportAsFixedFormat _ 
     Type:=xlTypePDF, _ 
     Filename:=ThisWorkbook.Path & "\rep.pdf", _ 
     Quality:=xlQualityStandard, _ 
     IncludeDocProperties:=True, _ 
     IgnorePrintAreas:=False, _ 
     OpenAfterPublish:=False 

     .Visible = False 
    End With 

    Application.ScreenUpdating = True 

    MsgBox "Your PDF Has been Created with Success!!", vbInformation 
End Sub 
+0

この答えは素敵で貴重でスマートなので、既存のpdfファイルをappend、removeなどで編集するためのAdobeの手順を使用する仕組みと方法は、非常に価値があり、低範囲ファインダです。私は完全で受け入れやすい答えを拡張することをお勧めします[stackoverflow.com/questions...](https://stackoverflow.com/questions/37551957/using-vba-how-do-i-call-up-the-adobe -create-pdf-function)関連の質問です。 – mgae2m

+0

ありがとう!!!!!! –

+0

あなたのアドバイスが私の問題を解決したことを認めます。私はあなたのソリューションを使いました。しかし、アドビのリファレンス手順を使用する力は、私が待っている問題です。 – mgae2m

3

「Acrobat」ライブラリが必要です。

単純な解決策の1つは、固有のExportAsFixedFormatメソッドを使用して、各セクションを個別のPDFファイルとして保存することです。 "C:\一時\のPart1.pdf" と "C:\一時\のPart2.pdf"

次に、以下の例のとおりのAcrobat APIでInsertPagesメソッドを使用します。

Sub MergePDF() 

Dim AcroApp As Acrobat.CAcroApp 

Dim Part1Document As Acrobat.CAcroPDDoc 
Dim Part2Document As Acrobat.CAcroPDDoc 

Dim numPages As Integer 

Set AcroApp = CreateObject("AcroExch.App") 

Set Part1Document = CreateObject("AcroExch.PDDoc") 
Set Part2Document = CreateObject("AcroExch.PDDoc") 

Part1Document.Open ("C:\temp\Part1.pdf") 
Part2Document.Open ("C:\temp\Part2.pdf") 

' Insert the pages of Part2 after the end of Part1 
numPages = Part1Document.GetNumPages() 

If Part1Document.InsertPages(numPages - 1, Part2Document, 
0, Part2Document.GetNumPages(), True) = False Then 
    MsgBox "Cannot insert pages" 
End If 

If Part1Document.Save(PDSaveFull, "C:\temp\MergedFile.pdf") = False Then 
    MsgBox "Cannot save the modified document" 
End If 

Part1Document.Close 
Part2Document.Close 

AcroApp.Exit 
Set AcroApp = Nothing 
Set Part1Document = Nothing 
Set Part2Document = Nothing 

MsgBox "Done" 

End Sub 

を参照:http://www.khk.net/wordpress/2009/03/04/adobe-acrobat-and-vba-an-introduction/

アドビデベロッパーガイド:アドビAPIリファレンスhttp://www.adobe.com/devnet/acrobat/pdfs/iac_developer_guide.pdf

http://www.adobe.com/devnet/acrobat/pdfs/iac_api_reference.pdf

+0

私は、変更フィルタリング基準によって改革された印刷領域の新しい顔を求めています。新しいpdfファイルを作成せずに、新しいpdfファイルの末尾に静かに追加します。 – mgae2m

+0

はい私は元の質問を読んだ。私はまたあなたの問題を解決した最初の質問にあなたのコメントを読んだが、Adobeの参考文献はなかった。 Adobe APIを読んだことがありますか? Adobeファイルの内容を変更する方法はなく、外部アプリケーションからPDFコンテンツを作成する方法はありません。 2つの答えを結合して、Windows APIを通じて一時ファイルを削除する必要があります。もちろん、 – Michael

+0

。私はこのアプローチを投げます。したがって、私はADOBEの内容を変更するためのADOBEの機能(手順)を考え、存在していたpdfファイルを編集することで、魔法使いは私がその価値のある恩恵を受けました。 – mgae2m

関連する問題