[[20240111215700]] 『VBA「印刷結果を名前を付けて保存」でキャンセル氏x(かずと) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBA「印刷結果を名前を付けて保存」でキャンセル時の処理』(かずと)

新規ブックを作成し、必要データを入力した後保存します。
任意のプリンタで新規ブックをPrintOutしたら、保存した新規ブックを削除します。
PrintOutでのPDF出力の際には「印刷結果を名前を付けて保存」ダイアログ画面が表示されますが、このダイアログ画面で「キャンセル」ボタンをクリックしたときには、新規ブックを削除しない処理にしたいです。

マクロを実行するPCが異なったり、入力したデータ量によっても「キャンセルボタン」クリックでエラーが発生したりしなかったりで、処理の分岐ができません。

解決策をご教授いただければと思います。
よろしくお願いいたします。

Sub 印刷実行()

Dim NewBook As Workbook
Dim SetupPrinter As String

'B1に入力されたプリンタ情報を取得(例:Adobe PDF / Microsoft Print to PDF / Canon iP90 など)

    SetupPrinter = ActiveSheet.Range("B1").Value

'新規ブックにデータを入力して保存

    Set NewBook = Workbooks.add
    NewBook.Worksheets(1).Range("A1").Value = "データ内容"
    NewBook.SaveAs Filename:="C:\data\tmp.xlsx"

'新規ブックをPrintOut

    NewBook.PrintOut ActivePrinter:=SetupPrinter

    NewBook.Close
    Kill "C:\data\tmp.xlsx"

End Sub

< 使用 Excel:Microsoft365、使用 OS:Windows10 >


 前提として、VBA側は印刷命令をプリンタに投げることは可能ですが、
 本当に印刷されたのか、pdf変換されたのかは、分かりません。
 それはプリンタ側の領域だからです。
 提示されたダイアログもプリンタ側ですので、操作の状態を
 取得することは出来ません。

 方法の1つとして、pdfはプリンタ側に渡さず、VBAで処理することでしょうか。
 現状を模して、保存場所やファイル名を任意にする場合は、
 それなりのコードの追加が必要ですが。

 >マクロを実行するPCが異なったり、・・・
 >処理の分岐ができません。

 関係があると思うなら、コードを提示してください。

(tkit) 2024/01/12(金) 09:04:42


tkit様、ありがとうございます。
ダイアログの操作の状態が取得できないということが知れただけでも良かったです。
それを踏まえて、処理の流れを見直そうと思います。
本当にありがとうございました。
(かずと) 2024/01/12(金) 20:38:36

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.