質問
2020年10月24日土曜日 4:26
環境:Windows 10(2004)
Office Pro Plus 2016(Excel バージョン2009)
WorksheetオブジェクトのPrintOutメソッドでPDF出力をしています。
(PDF writerは環境依存を避けるために"Microsoft Print to PDF"を指定)
出力を指定する印刷ダイアログ「印刷結果を名前を付けて保存」が表示されますが、そこで[キャンセル]を押すとエラーになります。
エラー:実行時エラー '1004'
PrintOutメソッドは失敗しました'_Worksheet'オブジェクト
このエラーを表示しないで(回避して)元の画面に戻したいのですが、PrintOutメソッドは戻り値を持たないようなので、方法はないのでしょうか?
以下はコードです。
Public Const PDFPRINTER As String = "Microsoft Print to PDF"
Private Sub btnPrint_Click()
Dim ws As Worksheet
Dim maxrow As Long
Dim area As String
If (vbEmpty = Worksheets(”結果シート”).Cells("A1")) Then
MsgBox "結果がありません", vbOKOnly ; vbExclamation
Else
Set ws = Worksheets(”結果シート”)
maxrow = ws.Cells(ws.Rows.Count, "C").End(xlUp).row
area = ”A1:C100"
ws.PageSetup.PrintArea = area '印刷範囲を設定
ws.PrintOut , , , , PDFPRINTER '<===ここでエラー
Set ws = Nothing
MsgBox "PDF化しました。", vbOKOnly ; vbInformation
End If
End Sub
すべての返信 (2)
2020年10月25日日曜日 7:14
On Error 使えば?
On Error Resume Next
ws.PrintOut , , , , PDFPRINTER
If Err.Number <> 0 Then
'失敗時の処理
End IF
2020年10月27日火曜日 11:25
minmin312さん、ありがとうございます。
ws.PrintOut , , , , PDFPRINTER
If (0=Err.Number) Then
'PDF作成終了のメッセージ
else
'キャンセル(失敗)時の処理
End IF
とすることで、できました。