#395 部数を指定して印刷するには? レポート、VBA

DoCmdオブジェクトの「PrintOut」メソッドを使うと、レポートの「印刷部数」をプログラム上から指定して印刷することができます。

次のプログラム例では、"rpt受注"レポートを複数部印刷します。PrintOutメソッドの5番目の引数に数値を指定することで、その数の部数をまとめてプリンタに出力することができます。
この引数には、たとえばフォーム上のテキストボックスで指定された値を設定したいといったこともあると思いますが、ここでは、レポートのレコードソースに含まれる"社員コード"の数を集計し、その数だけ印刷するものとします。つまり、対象社員に同じレポートを一括印刷して配布したいというケースを想定しています。

Public Sub PrintCopies()

  Dim dbs As Database
  Dim rst As Recordset
  Dim strSQL As String
  Dim strRptName As String
  Dim lngCopies As Long

  'レポート名を設定
  strRptName = "rpt受注"

  'レコードソースに含まれる社員コードの数を取得
  Set dbs = CurrentDb
  strSQL = "SELECT 社員コード FROM 受注 GROUP BY 社員コード"
  Set rst = dbs.OpenRecordset(strSQL)
  'その数を印刷部数に設定
  lngCopies = rst.RecordCount
  rst.Close

  'レポートをプレビューで開く
  DoCmd.OpenReport strRptName, acViewPreview

  'レポートを指定部数出力
  DoCmd.PrintOut , , , , lngCopies

  'レポートを閉じる
  DoCmd.Close acReport, strRptName

End Sub

| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved