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

  • 質問

  • 環境: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

    2020年10月24日 4:26

すべての返信

  • On Error 使えば?

    On Error Resume Next

    ws.PrintOut , , , , PDFPRINTER

    If Err.Number <> 0 Then 

    '失敗時の処理

    End IF

    2020年10月25日 7:14
  • minmin312さん、ありがとうございます。

    ws.PrintOut , , , , PDFPRINTER

    If (0=Err.Number) Then

       'PDF作成終了のメッセージ

    else 

      'キャンセル(失敗)時の処理

    End IF

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

    2020年10月27日 11:25