[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.