2011-11-15 28 views
1

現在、私はpdfcreatorを使用してレポートをpdf形式に変換しています。これは手動で行う必要がありますので、私はPDFファイルとしてレポートを自動的に保存するソリューションを探しています。コードは、Access 2000以降のバージョンで動作している必要があります。レポートをPDF形式で保存

前に、私はこのアプローチを使用しました

答えて

3

私たちは、PDFファイルを生成するStephen Lebans' ReportToPDFを使用しています。
私たちはAccess 2003を使用し、A2000、2002および2003(A2007はすぐにPDFをサポートしています)で動作します。

アプリケーションフォルダまたは%windir%\system32フォルダにある必要があるDLLは2つしかありません。は登録する必要はありません

すべてのマシンにPDFプリンタをインストールするよりも、2つのファイルをコピーするだけで簡単なので、PDFプリンタの代わりにこのソリューションを使用することをお勧めします。

1

:これは私がすなわち無人と迷惑のないPDF形式へのMicrosoft Access レポートの印刷を自動化するために使用される手法であるhttp://bytes.com/topic/access/answers/204362-howto-automate-printing-access-reports-pdf-files

「名前を付けて保存...」 ダイアログをさらに重要なことに、Adobe Acrobatやその関連APIなどの商用の プログラムを使用する必要はありません。ラッセル・ラングによって無料で提供PDF文書を作成するための2つの自由 プログラム -

技術はGhostscriptのとリダイレクトポートモニタを使用しています。 実際の自動化では、FileSystemObject、 WScript.Network(Windows Script Host Network Object)とAccess オートメーションを使用してVBAコーディングが必要です。

INSTRUCTIONS:

1)Ghostscriptの インストール - ポストスクリプト言語のための通訳やPDF http://www.cs.wisc.edu/~ghost/

2)RedMonインストール - リダイレクトポートモニタ を - プログラムに特別なプリンタポ​​ートをリダイレクト(例えば などGhostscriptの) http://www.cs.wisc.edu/~ghost/redmon/

3)は、仮想PDFプリンタを設定します http://masterdev.dyndns.dk/know/freepdf.html http://stat.tamu.edu/~henrik/GSWriter/GSWriter.html

4)設定します。 - GhostscriptのとRedmon を使用してここで 上記のツールをインストールする方法について説明します2つのWebページがあります 「プログラムの出力扱い」 - 新しいPDFファイルは常に Cすなわち同じファイルに保存してくださいを:\一時\のoutput.pdf

- 出力 :以下mannter でPDF仮想プリンタで使用されるRedMonプリンタポ​​ート

"Program Arguments"の設定にこれを使用してください: @c:\ gs \ pdfconf.txt -sOutputFile = "C:\一時\のoutput.pdf" -c .setpdfwrite -f -

(リテラルファイルパスの代わりに "%1" を注意してください)

5)印刷し、独自のVisual Basicのコードを書きますpdf に報告し、FileSystemObjectを使用して chosingの名前/場所にコピーします。 WScript.Networkオブジェクトを使用して、デフォルトのプリンタ を通常のデフォルトプリンタからPDFプリンタに変更して元に戻します。

サンプルコード(アクセスVisual Basicの):Access 2000の内部で動作するように上記のコードについては

Sub PrintReportToPDF(strReport as String, _ 
strOutputPath as String) 

Const PDF_PRINTER as String = "PDF Printer" 
Const ORIGINAL_PRINTER as String = "\\OFFICE\HP1320" 
Const TEMP_PATH as String = "C:\temp\output.pdf" 

Dim net as WScript.Network 
Dim fso as Scripting.FileSystemObject 

Set net = new WScript.Network 
net.setDefaultPrinter PDF_PRINTER 

DoCmd.OpenReport strReport 

Set fso = New Scripting.FileSystemObject 
fso.CopyFile TEMP_PATH, strOutputPath, True 
fso.DeleteFile TEMP_PATH 
Set fso = Nothing 

net.setDefaultPrinter ORIGINAL_PRINTER 
Set net = Nothing 

End Sub 

は、MicrosoftスクリプトランタイムおよびWindows Script Hostの オブジェクトモデルに の参照を追加する必要があります。

これまでの私の経験では、ときFileSystemObjectオブジェクト DoCmd.OpenReport()は非常に迅速にPDFにレポートを出力 を終了サブルーチンが...しかし、あなたは非常に 大きなレポートを持っている場合output.pdfがあるかもしれないということですそれを移動/名前変更します。したがって、Windows API Sleep()関数を使用することができます。 読者へ 演習として残して複数のレポートを出力するルーチンを書く< http://support.microsoft.com/kb/q162150/>

参照してください。個人的には、レポート名 をVBAモジュールにハードコードするのではなく、「Settings_Reports」というテーブルの テーブルにレポートを保存することをお勧めします。

その他のヒント:

  • 使用DoCmd.SendObject()は、管理者に新しく作成された レポートのメール送信を自動化します。

  • は、一つのファイルに URLを異種のPDFレポートをマージするPDFツールキットを使用します。また、これはWScript.Shell.Run()メソッドを介してVBAシェル()関数を使用して自動化された、または のVBScriptで使用することができるhttp://www.accesspdf.com/pdftk

  • 使用するVBScript ExcelやWordと同様に、Accessを自動化することができます。次のマイクロソフトサポート技術情報の記事を参照してください : ACC:オートメーションサーバーとしてMicrosoft Accessを使用し http://support.microsoft.com/kb/q147816/

コード断片(VBScriptの):回答

dim acc 
set acc = CreateObject("Access.Application") 
with acc 
..OpenCurrentDatabase "C:\Reports\Sales.mdb" 

' Call the customer subroutine we defined earlier 
..Run("PrintReportToPDF", "rptSalesFigures_Monthly", _ 
"N:\Marketing\Reports\SalesSummary" _ 
& Year(Date()) & Format(Month(Date()),"00") 

[Etc...] 

言うまでもなく、そのことができますがたくさんありますそのアプローチで済ませてください。 そして、最も重要な点は、別のAPI(標準のWindows Script HostとMicrosoft Scripting Runtime ライブラリ以外の 以外のもの)を習得する必要がないことです。そして、最高ののは、 完全無料です! PDFプリンタの設定

:ここ が 仮想PDFプリンタのインストールおよび構成のための、より詳細な指示している - からcribbed: < http://masterdev.dyndns.dk/know/freepdf.html>

  1. はCにGhostscriptをインストールします。 http://www.ghostscript.com/doc/AFPL/index.htm \

  2. テキストファイル(c:\ gs \ pdfconf.txt)を作成し、次のテキストを追加します。

    -Ic:\ GS \ gs8.11 \ LIB; C:\ GS \フォント -sDEVICE = pdfwrite -dNOPAUSE -dSAFER

なお、バージョン8.11に最初のラインポイントゴーストスクリプト。 異なるバージョンを使用している場合、または別のバージョンの にインストールした場合は、適切な変更を行います。

  1. ダウンロード、あなたはsetup.exeを実行すると、あなただけのメッセージボックスが表示されます http://www.cs.wisc.edu/~ghost/redmon/index.htm

    • 解凍、およびRedMon(リダイレクトPortMonitor)をインストールします。
  2. ゴープリンタ/ファックス用のWindowsの[スタート]ボタンの下のメニューと に新しいプリンタを追加します。

    • プリンタのドライバは、/ color postscript/ プリンタ用でなければなりません。私は、HPの色のLaserjetに4550 PSを選んだ
    • プリンタポ​​ートRPT1に設定します(リダイレクトされたポート)
  3. 設定ポート リダイレクトポートへ:「C:\ gsの\ gs8.11 \ビン\のgswin32c .EXE "このプログラムの (異なる場合は、お使いのバージョンと のGhostscriptの場所を反映するように、この行を更新します)

引数は以下のとおりです。 @c:\ GS \ pdfconf.txt -sOutputFile =" %1 "-c .setpdfwrite -f -

出力:「ファイル名のプロンプト」を ラン:「ノーマル」

  1. は、このプリンタにカラーで何かを印刷してみてください。すべてが正常に動作する場合は、PDFファイルが に保存されるようにするファイル名の入力を求められます(.PDF拡張子を忘れないでください)。 ' これは誰かを助けることを願っています!

[email protected]

関連する問題