« PDF作成の自動化・省力化 [1] (「名前を付けて保存」を外から操作する) | トップページ | PDF作成の自動化・省力化 [3] (「名前を付けて保存」を外から操作するプログラムの改良版) »

2009年6月29日 (月)

PDF作成の自動化・省力化 [2] (CtrlSaveas.exeをVBから使う)

[1]のプログラム(CtrlSaveas.exe)をVB6から使います。

    doc = "PDF化対象ドキュメントファイルパス"
    pdf = "出力PDFファイルパス"
    dir = "......."
   
    ' 印刷前にCtrlSaveas.exeを起動しておく
    ctrlsaveas = ".....\CtrlSaveas.exe "
    ctrlsaveas = ctrlsaveas & """" & pdf & """"
    ctrlsaveas = ctrlsaveas & " 60"     ' タイムアウト
    Shell ctrlsaveas        ' VB関数
   
    ' 印刷実行:事前に"通常使うプリンタ"をPDFプリンタに設定しておく
    ShellExecute 0, "print", doc, vbNullString, dir, SW_HIDE      ' Win32 API

---------------------------------------------------------------------------

これで動きました。(PDFプリンタとして"いきなりPDF Professional"と"クセロPDF2"でテスト)

しかしドキュメントの種類と環境によっては問題がありそうです。
エクセルドキュメントならば印刷が終わるまでShellExecuteで止まっていて、ShellExecuteを抜けた時点でPDFが生成されています。
ところが(自分の環境においてですが)テキストドキュメントを上記のコードで印刷する(PDF化する)とテキストエディタMifesの印刷設定ダイアログが表示されるのですが、その時点でShellExecuteを抜けてしまっています。しかしPDFはまだ生成されていません。

ShellExecuteを抜けても印刷の開始と終了とを待たなければPDFファイルを利用(ファイルコピーなど)できないことになります。
そのため「名前を付けて保存」ダイアログを操作するプログラムCtrlSaveas.exeを改良してみます。

« PDF作成の自動化・省力化 [1] (「名前を付けて保存」を外から操作する) | トップページ | PDF作成の自動化・省力化 [3] (「名前を付けて保存」を外から操作するプログラムの改良版) »

ソフトウエア」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: PDF作成の自動化・省力化 [2] (CtrlSaveas.exeをVBから使う):

« PDF作成の自動化・省力化 [1] (「名前を付けて保存」を外から操作する) | トップページ | PDF作成の自動化・省力化 [3] (「名前を付けて保存」を外から操作するプログラムの改良版) »