• ベストアンサー

Excel VBA プリンタ指定

Excel2000のVBAで、あるシート(aaa)の内容を [ボタンA]では通常使用するプリンタに印刷 下記のコードでうまく動きました If Worksheets("aaa").PrintOut = False Then GoTo DAME End If [ボタンB]では通常使用するプリンタでない ソースネクストの"いきなりPDF PRO2"(インストール済)を使用して c:\配下にPDFファイルを出力したいのですが、どのようなコードを 記述すれば良いのでしょうか? os:xp pro です。

質問者が選んだベストアンサー

  • ベストアンサー
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.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)
回答No.1

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 = "~~~~" というような コード が得られますので、それをそのまま、上記の コード に挿入してください。

rei230
質問者

お礼

早々にご返事いただきありがとうございます。 うまく動きました。 もし、よろしければもう1つ質問があります。 PDFに出力する際、出力先が固定なので保存のダイヤログを表示 しない方法はありますか?

関連するQ&A

専門家に質問してみよう