• ベストアンサー

AccessでPDFを複数ファイルにして出力

○環境 Access2007or2010 Windows7Pro Accessで、帳票をPDFファイルにして出力することを考えています。 VBAのコードで DoCmd.OutputTo acOutputReport, (オブジェクト名), acFormatPDF, (ファイルのパス) と書けば出力できることを確認しました。 さらに、10ページあるレポートならば、10のPDFファイルに分割して出力したいと考えています。 が、そこまで方法を書いたページが見つかりません。 別ソフトと組み合わせてもいいので、何か方法をご存じの方はお教えください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

追伸 もし無ければレポートの適当なところに、不可視でも構わないので テキストボックスを1個配置して、コントロールソースに =[Pages] と設定して置いてください。

souitirou1
質問者

お礼

詳細なアドバイスありがとうございます。 結局、これとは違う方法で解決することにしました。 上記レポートはデータベースをselectした結果を出力するものなのですが、 そこに繰り返し処理を加えてDoCmd.OutputToをページ数ぶん繰り返すことにしました。 今回は使いませんでしたが、nicotinismさんの回答が他の方の助けになればと思います。

その他の回答 (1)

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

Adobe の Acrobat はお持ちでは無いでしょうか。 これを購入して・・ とてもお高いので。。私は下記の PDFCreator を使わせてもらっています。 http://sourceforge.jp/projects/pdfcreator/ 簡単な説明は上記リンクをご覧いただくとして オプションの AutoSave にチェックを入れ Filename には <Title> として おいて置けば自動的に保存されます。 ※ただし日本語(全角文字)は使えません なので別名で保存した後で、ファイル名を書き戻す必要が無いかも? (詳しくは最後の方に) Sub pdfPrint(rptName As String) '1ページずつPDFで印刷 'rptNameにはレポート名(※PDFCreatorで出力するように設定してあること)   Dim rpt As Report   Dim printCount As Integer   Dim i As Integer   DoCmd.OpenReport rptName, acViewPreview, windowmode:=acIcon   Set rpt = Reports(rptName)      If MsgBox(rpt.Printer.DeviceName & " で印刷します", vbOKCancel) = vbCancel Then     DoCmd.Close acReport, rpt.Name, acSaveNo     Set rpt = Nothing     Exit Sub   End If      printCount = rpt.Pages      Do Until i > printCount     i = i + 1     rpt.Caption = rpt.Name & Format(i, "-000")     DoCmd.PrintOut acPages, i, i   Loop      DoCmd.Close acReport, rpt.Name, acSaveNo   Set rpt = Nothing   MsgBox rptName & " の印刷終了" End Sub なお、YU-TANG さんが詳しい解説をされています。 レポートを PDF 出力する方法~ PDFCreator 編~ http://www.f3.dion.ne.jp/~element/msaccess/AcTipsRptPDFCreator.html また、日本語化を行った有志の方を紹介されています。

関連するQ&A

  • Access2007でページ毎にPDFを出力したい

    過去の質問等を参考に以下の方法を試してみました。 1.DoCmd.OpenReport でレポートをプレビュー(アイコン化)で開く 2.標題を変える 3.DoCmd.PrintOut でページを指定して印刷する  (事前にレポートデザインで、出力先プリンターをAdobe PDFにしています) 4.ページの枚数だけ、2~3を繰り返す この方法で処理はできたのですが、Adobe PDFを通しているせいか、すごく時間がかかります。 そこでもっとスムーズに出力する方法はないでしょうか? 例えば、DoCmd.OutputTo acOutputReport, "レポート名", acFormatPDF, "パス+ファイル名.pdf" でPDF出力を行なうととても早いので、こちらの方法でページを指定できると理想なのですが、、、 以上です。 よろしくお願いいたします。

  • AccessレポートをExcel2010PDF出力

    AccessからレポートのPDF出力を考えています。 DoCmd.OutputTo acOutputReport, Source, acFormatPDF, FileName Access2007以降なら上の文でPDF出力できますが、Access2003とExcel2010がインストール された環境で、Access2003からExcel2010の機能を使ってPDF出力させることは可能でしょうか。 AccessからExcelのワークシート関数を使ったり、Excelファイルを開いて編集することはできたので、 PDF出力もできるかもしれないと思い、質問しました。

  • Access2007レポート特定レコードのPdf化

    Access2007を使用して台帳管理を行っています。 その際にレポートをPdf化して電子保存を行っていますが、いちいちメニューからレコード指定しでファイル出力するのが煩雑なのでVBAを勉強して自動化しようと思っています。 実装したい機能はフォーム上に配置されたボタンを押したら、そのIDのレポート(PDFファイル)が指定のフォルダに保存されるものです。 初心者なりにいろいろ調べて下記のコードに行きついたのですがうまくID選択されません(全レコード保存される)。 ご教授お願いします。 Sub Pdf作成() DoCmd.OpenReport "レポート名", acViewPreview, , "ID=" & Me!ID DoCmd.OutputTo acOutputReport, "レポート名", acFormatPDF, "保存path&ファイル名.pdf" End Sub

  • アクセスのレポートのPDF化

    初心者です。よろしくお願いします。 アクセスで、ある入力フォームより、受付番号の一致したレポート(単票)をPDF化したものをエクスポートしたいのですが、受付番号で一致したものを抽出する条件の書き方わかりません。 PDF化は色々参考にして、下のようにできたのですが、これだと当然ながら、全レコード分出力されてしまいます。フォーム上に表示されている受付番号のみのレポートを出力したいのです。条件の加え方をやさしく教えていただけるとありがたいのですが。よろしくお願いします。 (レポートのPDF化) DoCmd.OutputTo acOutputReport, "受付票", acFormatPDF, "C:\ 受付票.pdf"

  • Access2010でTifファイルへ書き出す法

    Access2010でレポートをPDFファイルへ書き出すコードは DoComd.OutputTo acOutputReport , "R_売上明細", acFormatPDF, ファイル名 & ".pdf" とかですが、これをtifファイルで書き出したいときは、どうなるのでしょうか? 教えてください。

  • ACCESSレポートをPDFに出力したい

    ACCESSでレポートを作成して、下記のVBAで管理番号(ID)別にPDFファイルで保存したいと思っています。保存名はIDにしたいと思っています。 管理番号ごとに出力する部分のコードが分からずに困っています。どなたかご教授頂けないでしょうか?よろしくお願いします。 Private Sub コマンド9_Click() Const TBL_NAME = "T_住所録" Const RPT_NAME = "R_住所録" Const PDF_PATH = "C:\Users\TEST\" Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset rs.Open "SELECT DISTINCT ID FROM T_住所録", CurrentProject.Connection, adOpenStatic, adLockReadOnly Do Until rs.EOF pdfName = rs!ID DoCmd.OpenReport RPT_NAME, acViewPreview, , "ID = '" & rs("ID") & "'" DoCmd.OutputTo acOutputReport, RPT_NAME, acFormatPDF, PDF_PATH & pdfName & ".pdf" DoCmd.Close rs.MoveNext Loop End Sub 実行すると「出力データを指定したファイルに保存できません」とメッセージが出ます。

  • Access VBA 出力先フォルダ名の置換

    Access VBAで次のようにQueryとReportを予め用意したフォルダにExportしています。このシステムを別のユーザー「SPD110001」用を作成する時全ての「SPD110000」を「SPD11001」に置き換えていくのは大変です。何か式を作り1ヵ所だけ「SPD11001」に変更すると全ての「SPD110000」を「SPD11001」として解釈し「SPD11001」のフォルダにファイルが入るようにする方法を教えてください。 Public Sub Syuturyoku() DoCmd.OutputTo acOutputQuery, "在約122ソース", acFormatXLS, "c:\SPD\SPD110000\SpdFeedback\" & "在庫と注文残.xls" DoCmd.OutputTo acOutputQuery, "買掛221箱数と金額", acFormatXLS, "c:\SPD\SPD110000\SpdFeedback\" & "買掛金額.xls" DoCmd.OutputTo acOutputQuery, "出庫0133履歴", acFormatXLS, "c:\SPD\SPD110000\SpdFeedback\" & "出庫履歴.xls" DoCmd.OutputTo acOutputQuery, "棚卸0133履歴", acFormatXLS, "c:\SPD\SPD110000\SpdFeedback\" & "棚卸履歴.xls" DoCmd.OutputTo acOutputQuery, "注文書311履歴", acFormatXLS, "c:\SPD\SPD110000\\SpdFeedback\" & "注文書履歴.xls" DoCmd.OutputTo acOutputQuery, "入庫0133履歴", acFormatXLS, "c:\SPD\SPD110000\SpdFeedback\" & "入庫履歴.xls" DoCmd.OutputTo acOutputQuery, "物品121採用物品リスト", acFormatXLS, "c:\SPD\SPD110000\SpdFeedback\" & "物品採用中リスト.xls" DoCmd.OutputTo acOutputQuery, "物品122未採用物品リスト", acFormatXLS, "c:\SPD\SPD110000\SpdFeedback\" & "物品未採用リスト.xls" DoCmd.OutputTo acOutputReport, "ラベル スタッフ111", acFormatPDF, "c:\SPD\SPD110000\SpdFeedback\" & "ラベル スタッフ" & ".pdf" DoCmd.OutputTo acOutputReport, "ラベル 物品121採用物品リスト", acFormatPDF, "c:\SPD\SPD110000\SpdFeedback\" & "ラベル 物品採用中リスト" & ".pdf" DoCmd.OutputTo acOutputReport, "ラベル 連番", acFormatPDF, "c:\SPD\SPD110000\SpdFeedback\" & "ラベル 連番" & ".pdf" Exit Sub

  • Acces2010のランタイム版だけ、エラー発生

    こんにちは。いつもお世話になっております。 Access2010のVBAでプログラムを組んだのですが。 Access2010がインストールされたPCでは問題ないのですが。 Access2010ランタイム版ではエラーが発生します。 PDFを出力する部分で、↓ DoCmd.OutputTo acOutputReport, "Rpt_Pdf返品明細", acFormatPDF, "C:\11.PDF" ここで、 「コマンドまたはアクション '出力' は無効です。」というエラーメッセージがでます。 これを何とか出さずにPDFファイルを出力できるようにしたいのですが。 アドバイスをもらえたら幸いです。m(__)m Accessファイルの拡張子は,MDBファイル。 開発環境:Windows 7 Pro Access2010本体 実行環境: Windows XP Pro Access 2010ランタイム Windows 7 Pro Access 2010ランタイム

  • ACCESS VBA ベージ毎のPDF化

    過去のご回答履歴を拝見して、質問をさせて頂きました。 VBAに関して全くのど素人で、インターネットで検索しながら 下記の文を書いてみました。 <状況> テーブル:Amazon2 この中にある"区分"というフィールドをグループのキーにして PDFファイルをCドライブに保存したい。 フォームはグループ化でページが分かれている状況です。 下記文章で実行すると「パラメータの入力」が開き(画像)、 表示されているのは"区分"なので表示と同じように入力すると フィルターされて出力されます。 この、「パラメータの入力」が開かずに実行できるようにするには どのように編集すれば可能でしょうか? ご教示頂ければ幸いです。 <作成した文> Option Compare Database Private Sub 分割PDF() Const TBL_NAME = "Amazon2" Const RPT_NAME = "Amazon for ESKER" Const PDF_PATH = "C:\Users\" Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset rs.Open "SELECT DISTINCT 区分 FROM Amazon2", CurrentProject.Connection, adOpenStatic, adLockReadOnly Do Until rs.EOF pdfName = rs!区分 DoCmd.OpenReport RPT_NAME, acViewPreview, , "区分=" & rs!区分, acWindowNormal DoCmd.OutputTo acOutputReport, RPT_NAME, acFormatPDF, PDF_PATH & rs!区分 & ".pdf" DoCmd.Close rs.MoveNext Loop End Sub

  • ACCESS VBA 複数グループ毎のPDF化

    昨日、グループ毎のPDF化はおかげさまで下記の構文で実行できました。 但しグループキーがテーブルにある"PO”というフィールドもキーにする必要があり、また行き詰ってしまいました。 どのような文を加えれば"区分"と"PO"をキーに分けてPDFを作成できますでしょうか? ご教授頂けましたら幸いです。 <行いたいことの例> 区分|PO|商品コード FZ|123|AAA FZ|123|BBB FZ|456|AAA ※区分は同じでもPOが異なる場合はファイルを分けたい <区分毎のPDF化は成功した構文> Option Compare Database Private Sub 分割PDF() Const TBL_NAME = "Amazon2" Const RPT_NAME = "Amazon for ESKER" Const PDF_PATH = "C:\Users\(アカウント)\" Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset rs.Open "SELECT DISTINCT 区分 FROM Amazon2", CurrentProject.Connection, adOpenStatic, adLockReadOnly Do Until rs.EOF pdfName = rs!区分 DoCmd.OpenReport RPT_NAME, acViewPreview, , "区分 = '" & rs("区分") & "'" DoCmd.OutputTo acOutputReport, RPT_NAME, acFormatPDF, PDF_PATH & pdfName & ".pdf" DoCmd.Close rs.MoveNext Loop End Sub

専門家に質問してみよう