[Access2000]VBAでPDFを自動出力する Bullzip

ACCESS

概要

Access 2000 などPDF出力ができないバージョンでPDF出力するための方法

方法

フリーソフト Bullzip をインストール
http://www.bullzip.com/products/pdf/info.php

“Bullzip PDF Printer” が作成される

VBAで以下のコードを記述

Dim objPrinterSettings As Object
Dim toFile As String

toFile = “c:\TEST.pdf”

‘PDFプリンタの設定
Set objPrinterSettings = CreateObject(“Bullzip.PDFPrinterSettings”)

‘保存するためのプリンタ設定を行う
With objPrinterSettings
.SetValue “output”, toFile
.SetValue “showsettings”, “never”
.SetValue “ConfirmOverwrite”, “yes”
.SetValue “ShowPDF”, “no”
.WriteSettings True
End With

Docmd.OpenReport “R_HOGEHOGE”

”必要であればこの下にPDFが出力されるまで待機するロジックを追加しておきます”

これでOK。

.SetValue に関する詳細は
http://www.bullzip.com/products/pdf2/doc/info.php

注意点:Docmdでレポートの印刷をする際に、Bullzip PDF Printer を標準にするか、レポートのプリンター指定をBullzip PDF Printerにしておく必要がある。つまりレポート印刷はBullzip PDF Printerが使われるようにしておく必要がある。
ACCESS2002以上のバージョンならプリンタ切り替えが簡単だが、それより前のバージョンだとOS標準プリンタをAPIを駆使して切り替えるか、レポートのページ設定でプリンタを固定で設定するかしないといけない。

追加で注意点:もしPDFの出力を連続で行う場合、2つ目の出力は1つ目のPDF出力が開始された後でないとだめのようです。プリンタスプールにたまったのち、実際のPDF出力が始まりますが、連続PDF出力など行うと2つ目のBullzipに送る設定情報が1つ目に反映されてしまいボロボロに。PDF出力実行したのちは出力が完了するまで待機させる必要があります。

コメント

スポンサーリンク
タイトルとURLをコピーしました