3

Excel で Workbook.BeforePrint イベントを処理する場合、対象のプリンターを特定する方法はありますか? hereに記載されているように、イベント ハンドラーの署名によってイベントをキャンセルできることはわかっていますが、プリンターが PDF プリンターでない限り、すべての印刷イベントをキャンセルしたいと考えています。

ユーザーが「名前を付けて保存」または「エクスポート」を選択して PDF を作成すると、PDF プリンター ドライバーを使用して保存またはエクスポートが実行され、イベント ハンドラーがトリガーされますが、更新されません。その際、プリンターはアプリケーションのアクティブなプリンターとして設定されます。対象のプリンターを検出する別の方法はありますか?

4

2 に答える 2

0

これはうまくいくかもしれません。

Private mbSaving As Boolean

Private Sub Workbook_AfterSave(ByVal Success As Boolean)

    mbSaving = False

End Sub

Private Sub Workbook_BeforePrint(Cancel As Boolean)

    If InStr(1, Application.ActivePrinter, "PDF") = 0 And Not mbSaving Then
        Cancel = True
    End If

    mbSaving = False

End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    mbSaving = True

End Sub

Workbook_AfterSave は、PDF として保存するときに起動しません。奇妙な順序だと思います。

于 2013-04-16T22:21:49.403 に答える
0

VBA-エクセル

Debug.Print Application.ActivePrinter
于 2013-04-16T20:40:23.443 に答える