2017-09-26 16 views
1

私はPDFの問題を解決するためにいくつかの助けを探しています。私は2ページに印刷する情報があるシートを持っています。このシートに表示される情報は、数百のオプションのうちの1つを選択するドロップダウンオプションによって制御されます。表示される情報の単一のビューに対して、PDFへの印刷機能が正常に機能しているため、ドロップダウンを使用して1つのオプションを選択し、PDFに保存ボタンをクリックするとすべてがうまく動作します。Excel VBAのエクスポートとPDFへの添付

ドロップダウンボックスで使用可能なすべてのオプションをループし、すべてを保存する単一のPDFに追加する2番目の関数を追加する必要があります。ループ内のすべての標準コードを処理できますが、ループ内でPDFファイルを構築するにはどうすればよいですか。私は単一のPDFにエクスポートするシートの配列を構築する方法を知っていますが、このような「ループ内」関数は答えを見つけるのに苦労しています。

誰でも助けてください。それ以上の情報が必要な場合は、尋ねてください。表2:

おかげで、溶液中の

+0

-1これは高度なアプリケーションに依存します。つまり、あなたが今やっていることを明確にするために、いくつかのコードを投稿し、それがうまくいかない理由が必要になります。一般的に言えば、ExcelはPDFに必要なものをエクスポートします。複数の「ビュー」などをエクスポートする場合は、それらをすべて1か所で取得し、単一のPDFエクスポートを行う必要があります。これには通常、ヘルパーシート/ワークブックの作成が含まれます。または、Excelを使用して複数のPDFを作成し、他のツールを使用して組み合わせることもできます。 Excelを使用して「PDFに追加」する方法はありません。 –

+0

はヘルパーシート/ワークブックを使用しようとしますが、これは400以上のレコードで集中的であるかもしれないと感じています。私はPDFをマージする例を見つけましたので、このメソッドを使用して個々のPDFを作成してマージしようとします。私は第二の選択肢がずっと速いかもしれないが、確かにないと思う。 Byronのヘルパーシート/ブックオプションをすばやく最適化する巧妙な方法はありますか?どのプロトコルがここにあるか分からない。まだ投稿するコードがないので、コードを投稿してもらえますか?いずれにしても、私はどのような選択肢があるのか​​、その理由について助言します。私はExcel 2013、Adobe 10標準 – nelly2000

+0

を使用しています。再:400シート、Excelが処理できるものに驚くかもしれません。私は間違いなくあなたの元のワークブックを汚染しないように新鮮な/空のワークブックにそれらを入れます。私はかなり集中的なものでこのテクニックを使用しましたが、うまくいく傾向があります。それが多すぎるかどうかを調べ、それが遅すぎるか実行できない場合は最適化することをテストする価値があるでしょう。おそらく、それはうまく動作し、実行されます。 –

答えて

0

は、我々はという名前のテーブルを持っていると仮定します。 また、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 

ヘルプシートにデータを追加し、pdfをエクスポートすることができます。

参照:https://stackoverflow.com/questions/

+1

この例ではわずかにしか適用されていないにもかかわらず、リンク解答をそのままコピーしました。投稿されたコードは、OPの説明に基づいて動作しません。なぜなら、彼がエクスポートしたい範囲の根本的な内容が変化しているからです。つまり、Unionを介してRangeを構築し、単一のコピー/ペーストを行うことはここでは役立たないでしょう。 –

+0

これは複雑ですが、pdfにコンテンツを追加するアプローチです。 – mgae2m

関連する問題