ACCESS VBA ベージ毎のPDF化

このQ&Aのポイント
  • テーブルAmazon2のフィールド「区分」をグループのキーにしてPDFファイルをCドライブに保存したい。パラメータの入力が開かずに実行するにはどのように編集すればいいか教えてください。
  • ACCESS VBAを使用して、テーブルAmazon2のフィールド「区分」をグループのキーにしてPDFファイルをCドライブに保存したいです。パラメータの入力が開かずに実行する方法を教えてください。
  • VBAを使ってACCESSのテーブルAmazon2のフィールド「区分」をグループ化のキーにして、PDFファイルをCドライブに保存したいです。パラメータの入力が開かずに実行する方法について教えてください。
回答を見る
  • ベストアンサー

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

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

  • ベストアンサー
  • m3_maki
  • ベストアンサー率64% (295/459)
回答No.2

区分は 文字列型のようですから "区分='" & rs!区分 & "'" または "区分=""" & rs!区分 & """" 好みもありますが、前者がわかりやすいと思います。

Kanana0512
質問者

お礼

ご回答頂きありがとうございました。 構文を上記のようにしてみたのですが結果は空欄でPDFが作成されてしまいました。 私の質問の仕方が悪いので他の方のご質問も参考にしながら、下記に辿り着き、真似てみたら無事、出力できました。 https://okwave.jp/qa/q8116585.html 分かり難い質問にご対応頂きまして、感謝致します。

その他の回答 (1)

  • unokwave
  • ベストアンサー率58% (966/1654)
回答No.1

ダイアログを開いているのは DoCmd.OpenReport RPT_NAME, acViewPreview, , "区分=" & rs!区分, acWindowNormal です。 OpenReport自体がレポート用ダイアログを表示するか直接印刷する機能ですから。 https://docs.microsoft.com/ja-jp/office/vba/api/access.docmd.openreport RPT_NAMEが示すレポートが見つからなくて結果が表示されていないのだろうと思えます。

Kanana0512
質問者

お礼

ご回答頂きありがとうございました。 構文が何を動作しているのかも良くわからずに行っていたので、表示される原因がわかり助かりました。 上記のヒントを参考に再度調べて何とか表示されずに出力ができるようになりました。 本当にありがとうございました。

関連するQ&A

  • 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

  • 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 実行すると「出力データを指定したファイルに保存できません」とメッセージが出ます。

  • Acccess レポートをグループ別に出力する

    クエリ「納品書」を元にしたレポート「納品書」(※'クエリ名とレポート名は同名)は フィールド「顧客番号」(テキスト型)でグループ設定をしています。 レポートをPDF出力する際、グループごとにファイルを保存したいと思います。 しかし、VBA実行時に「パラメータが少な過ぎます。7を指定して下さい。」と エラーが出てしまい、行き詰まっています。 VBAの知識もほとんど無い為、どこで躓いているか教えていただけないでしょうか。 また、 他サイトで申し訳ありませんが・・・、 ●ACCESSVBA レポートをグループ毎に別のPDFファイルとして保存 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14108043684 こちらの回答を参考に、以下のように作成しました。 (以下、レコードソース) --------------------------- Const TBL_NAME = "納品書" Const RPT_NAME = "納品書"  Const PDF_PATH = "C:\Users\Desktop\ Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset rs.Open "SELECT DISTINCT 顧客番号 FROM 納品書", 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 & Format(date,"yyyymmdd") & ".pdf" DoCmd.Close rs.MoveNext Loop ---------------------------

  • ACCESS VBA

    ACCESSで検索フォームを作りたいと思っています。 VBAを使って行きたいと思うのですが、うまくいきません。 希望としては、該当するレコードのデータを抽出したいです。 よろしくお願いいたします。 ※現段階でのソースを書いてみました。 最終的に行いたい処理とは違うのですが、根本的に間違っているようなので簡略化しました。 /------------------------------------------------/ Private Sub コマンド1_Click() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim sql As String '接続 Set cn = CurrentProject.Connection 'レコードセットを取得 Set rs = New ADODB.Recordset sql = "SELECT * FROM 従業員データ " & _ "WHERE 年齢=30" rs.Open sql, cn, adOpenDynamic, adLockReadOnly rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub /------------------------------------------------/

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

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

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

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

  • アクセスVBA。ADO

    CSVから列を分割してテーブルにしたいかったので 下記のコードを記述しましたが、 Dim cn As ADODB.Connection Dim rs As New ADODB.Recordset Dim datacount As Long Set cn = New ADODB.Connection With cn .ConnectionString = "Provider=Microsoft.jet.OLEDB.4.0;Data Source=" & CurrentProject.Path & "\;" .Properties("Extended Properties").Value = "text;HDR=YES;" .Open End With Set rs = cn.Execute("SELECT * FROM 構成マスタ.csv") datacount = rs.Fields.Count For i = 0 To datacount strsql = "SELECT " & rs.Fields(i).Name & " INTO " & rs.Fields(i).Name & " FROM 構成マスタ.csv;" cn.Execute strsql Next i rs.Close cn.Close Set rs = Nothing Set cn = Nothing SQLを実行するところで、「日付エラー」となってしまいます。 データには特に日付等はないのでエラーになる原因がわかりません。 どなたかご教示いただけますでしょうか。

  • Access ADOについて質問です。

    Access ADOについて質問です。 以下コードでレコードセットを返す関数を使用しています。 動作的には問題ないのですが、標準モジュール内のレコードセットをClose及びNothingしていないのが気になります。 Private Sub Form_Open(Cancel As Integer) Dim rs2 As ADODB.Recordset Set rs2 = New ADODB.Recordset Set rs2 = CreateRecordSet("SELECT * FROM T_Standard;") Set Me.Recordset = rs2 rs2.Close: Set rs2 = Nothing end sub '標準モジュール Public Function CreateRecordSet(strSQL As String) As ADODB.Recordset Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = New ADODB.Connection cn.ConnectionString = "provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=O:\標準DB\StandardBackEnd.mdb" cn.Open Set rs = New ADODB.Recordset rs.Open strSQL, cn, adOpenStatic, adLockReadOnly Set CreateRecordSet = rs ' rs.Close: Set rs = Nothing   ←この部分 ' cn.Close: Set cn = Nothing   ←この部分 End Function 標準モジュール内ではCloseやNothingしなくてもメモリの開放は行われているのでしょうか? アドバイスよろしくお願いいたします。

  • Access PDF作成-日付フォルダー作成保存

    使用MS Access 2010 たびたびの質問で恐縮です。 レポートをPDFで一件づつ自動作成-任意のファイル名で自動保存のイベントは、 質問番号:6530399 のご回答で上手くいったのですが、試行してみるとPDFファイルが大量にできるので、「日付名フォルダー」を毎日生成して、そこに自動保存したくなりました。そこで新しい質問として新たにお尋ねします。 「受注一覧」という表形式フォームに日々の受注客百件程度が表示されています。レコードのフィールドに[ID]という受注IDコードがあります。 受注確認メールへPDF添付ファイル作成用の「受注確認PDF」というレポートがあります。 レコードソースのパラメータクエリで、受注一覧フォームの受注IDを参照しています。 それを使って"受注確認書(受注ID:" & [ID] & ")"というファイル名で"C:\PDF"フォルダーに"yyyymmdd"というフォルダーを自動で作成し、そこにPDFを一件ごと(1ページ)別名で保存するボタンを作成したいのです。 "yyyymmdd"のフォルダーがすでにある場合はそこに保存、無い場合は自動生成することにしたいと思っています。 Private Sub コマンド1_Click() Dim path As String path = "c\受注確認PDF" & Format(Date, "yyyymmdd") MkDir path On Error GoTo ERR1 Exit Sub ERR1: DoCmd.GoToRecord acActiveDataObject, , acFirst Do If Me.Recordset.RecordCount = Me.CurrentRecord Then MsgBox "最終レコードまで出力しました。" Exit Sub End If DoCmd.OutputTo acOutputReport, "受注確認PDF", acFormatPDF, "c\受注確認PDF" & Format(Now(), "yyyymmdd") & "\" & "受注確認書(受注ID " & Me.ID & ").pdf" DoCmd.GoToRecord acActiveDataObject, , acNext Loop End Sub DoCmd.GoToRecord から後の部分はhatena1989 様のご回答で上手くいったのですが、前半部分の日付名フォルダー作成のところが上手くいきません。 MkDir path →実行時エラー75 パス名が無効です。 となってしまいます。 また、エラートラップというのでしょうか?その書き方も自信ありません。 ご教授いただきたく、お願いします。

  • Access2000 VBAについて質問です。

    Access2000 VBAについて質問です。 下記ソースコードでUPDATE(更新)しているのですが、バチンとAccessが落ちてしまいます。 Private sub UPDATESQL() StrSQL = "SELECT * FROM T_StandardList WHERE ID = " & Me.ID Set ct = CurrentProject.Connection RS.CursorLocation = adUseClient RS.Open StrSQL, ct, adOpenDynamic, adLockOptimistic RS![filed1] = Me![Value1] RS![filed2] = Me![Value2] RS![filed3] = Me![Value3] RS![filed4] = Me![Value4]      Call CloseButton_Click Set RS = Nothing Set ct = Nothing End Sub Private Sub CloseButton_Click() DoCmd.SetWarnings False 'SQLの実行 DoCmd.RunSQL "DELETE FROM T_TempList" DoCmd.Close acForm, Me.Name DoCmd.SetWarnings True End Sub CloseButtonをクリックしても落ちることがあるので、CloseButton_Click関数が怪しいとは感じます。 どなたか詳しい方アドバイスよろしくお願いいたします。 m(_ _)m

専門家に質問してみよう