次の方法で共有


Worksheet.PrintOutメソッドでのキャンセル

質問

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

とすることで、できました。