- ベストアンサー
Excel VBA プリンタ指定
Excel2000のVBAで、あるシート(aaa)の内容を [ボタンA]では通常使用するプリンタに印刷 下記のコードでうまく動きました If Worksheets("aaa").PrintOut = False Then GoTo DAME End If [ボタンB]では通常使用するプリンタでない ソースネクストの"いきなりPDF PRO2"(インストール済)を使用して c:\配下にPDFファイルを出力したいのですが、どのようなコードを 記述すれば良いのでしょうか? os:xp pro です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
先ず、 http://blog.ddc.co.jp/mt/dtp/archives/20080312/102000.html をご参考に、[いきなりPDF Professional 2 設定] ダイアログ - [一般] タブ - [同盟のファイルがある場合、上書きする(N)] に チェック を付けてください。 >c:\配下にPDFファイルを出力したい とのことですが、[保存先フォルダ]・[ファイル名] の指定はご勘弁ください。 随分と探し回ったのですが、私には難しそうです。 というか、[いきなりPDF Professional 2] の設定の方に、デフォルト の出力先とかはありませんかね? それと、ファイル名は Excel の ブック が「book1.xls」とすると、PDF に出力したものは自然に「book1.pdf」になるようになっていないでしょうか? 上記のようなことでしたら、出力前に、当該ブック を [保存先フォルダ] & "\" & [ファイル名] & ".xls" で保存してから PDF に出力すればよいかと存じます。 PC の環境にもよりますが、PDF に出力してから [名前を付けて保存] ダイアログ が表示されるまで、時間がかかるようですので、 Application.Wait (Now + TimeValue("0:00:05")) として、5秒休ませるようにしております。 お試しになって、時間の調整をなさってください。 Option Explicit Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" _ (ByVal hWnd As Long, ByVal msg As Long, ByVal wParam As Long, _ ByVal lParam As Long) As Long Private Const WM_COMMAND As Long = &H111 Private Const IDOK As Long = &H1 Sub ck() Dim default_printer As String Dim hWnd As Long Dim Ret As Long default_printer = Application.ActivePrinter Application.ActivePrinter = "~~~~" Worksheets("aaa").PrintOut Application.ActivePrinter = default_printer Application.Wait (Now + TimeValue("0:00:05")) hWnd = FindWindow(vbNullString, "名前を付けて保存") Ret = PostMessage(hWnd, WM_COMMAND, IDOK, 0&) End Sub
その他の回答 (1)
- DOUGLAS_
- ベストアンサー率74% (397/534)
Dim default_printer As String default_printer = Application.ActivePrinter Application.ActivePrinter = "~~~~" Worksheets("aaa").PrintOut Application.ActivePrinter = default_printer 「~~~~」のところは、 [新しいマクロの記録(R)...] で、 1)[印刷ダイアログ] を開き 2)[プリンタ] セクション - [名前(M):] に「いきなりPDF PRO2」を指定すると 3)[キャンセル] ボタン が [閉じる] ボタン に変わりますので、 4)その [閉じる] ボタン を クリック。 するところまでを記録してみると、 Application.ActivePrinter = "~~~~" というような コード が得られますので、それをそのまま、上記の コード に挿入してください。
お礼
早々にご返事いただきありがとうございます。 うまく動きました。 もし、よろしければもう1つ質問があります。 PDFに出力する際、出力先が固定なので保存のダイヤログを表示 しない方法はありますか?