こんにちは、なかぜんです!
「Accessで管理しているデータをWordで綺麗に印刷できたら…」「Accessのレポートだけじゃ物足りない…」そんなお悩みをお持ちではありませんか?
実はAccessとWordを連携させれば、請求書や報告書などの帳票を自動で出力できるようになります。VBAを使って印刷まで自動化すれば、業務効率がグンとアップしますよ!
AccessとWordを連携するメリット
- 帳票デザインをWordで自由にレイアウトできる
- Accessのデータを活用して個別帳票を一括作成
- VBAを使えばボタン一つで自動印刷も可能
基本の流れを確認しよう
1. Wordの帳票テンプレートを作る
Wordで帳票の「ひな形」を作成します。差し込みフィールドの代わりに、例えばこんな形でプレースホルダを入れておきましょう:
【顧客名】様 ご注文ありがとうございます。 注文日:【注文日】 商品:【商品名】 数量:【数量】
この【~】部分をAccess側から置換していくイメージです。
2. AccessからWordを操作するVBAを書く
次に、AccessからWordを開き、データを差し込んで帳票を出力するVBAを作成します。
VBAコード例(顧客ごとにWord帳票を出力)
Sub 帳票をWordで印刷()
Dim wdApp As Object
Dim wdDoc As Object
Dim rs As DAO.Recordset
Dim templatePath As String
Dim savePath As String
' Wordのテンプレートファイルのパス
templatePath = "C:\帳票テンプレート\帳票テンプレート.docx"
' Wordアプリケーションを起動
Set wdApp = CreateObject("Word.Application")
wdApp.Visible = True ' 印刷時に非表示にしたい場合はFalse
' 顧客データの取得(例としてT_顧客から)
Set rs = CurrentDb.OpenRecordset("SELECT * FROM T_顧客")
Do Until rs.EOF
' テンプレートを開く
Set wdDoc = wdApp.Documents.Open(templatePath)
' テキスト置換
With wdDoc.Content.Find
.Text = "【顧客名】"
.Replacement.Text = rs!顧客名
.Execute Replace:=2
.Text = "【注文日】"
.Replacement.Text = Format(rs!注文日, "yyyy/mm/dd")
.Execute Replace:=2
.Text = "【商品名】"
.Replacement.Text = rs!商品名
.Execute Replace:=2
.Text = "【数量】"
.Replacement.Text = rs!数量
.Execute Replace:=2
End With
' 保存&印刷
savePath = "C:\帳票出力\" & rs!顧客名 & "_帳票.docx"
wdDoc.SaveAs savePath
wdDoc.PrintOut
wdDoc.Close False
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
wdApp.Quit
Set wdApp = Nothing
MsgBox "帳票の出力が完了しました!", vbInformation
End Sub
解説: このコードでは、Wordのテンプレートを開いて、レコードセットの各顧客情報を順番に差し込み、保存&印刷しています。「【顧客名】」などのキーワードをFind機能で置換するのがポイントです。
よくある注意点・エラー
- Wordテンプレートのパスが間違っている → 絶対パスで指定しましょう
- レコードが0件 → クエリにWHERE条件を付けた場合は要確認
- Wordオブジェクトの解放忘れ → 必ずSet = Nothingで終了処理を
- 印刷設定が環境依存 → テスト印刷を事前に行うのが安心です
中級者向けの応用ポイント
1. PDF出力に対応する
以下のようにすれば、WordからPDFファイルとして出力することも可能です。
wdDoc.ExportAsFixedFormat "C:\帳票PDF\" & rs!顧客名 & ".pdf", 17
2. 差し込み印刷を使う方法
Wordの「差し込み印刷」機能とAccessのクエリを連携させて帳票を一括作成する方法もありますが、細かい制御をしたい場合はVBAの方が便利です。
まとめ:AccessとWordで帳票印刷にチャレンジ!
AccessとWordを連携させれば、業務で使える綺麗な帳票が簡単に作れるようになります。テンプレートの工夫とVBAの自動化で、印刷作業の手間を大幅に減らせます。
今回の内容をマスターすれば、「Accessデータ→Word印刷」という業務フローがスムーズになります。次は「PDF化」や「メール送信」といったさらなる自動化にもチャレンジしてみましょう!
それでは、なかぜんでした。またお会いしましょう♪
