除非使用“打印到PDF”macrosbutton,否则如何禁用打印Excel工作簿?

我search了网站,找不到答案。

背景:我有这个macros作为工作表上的一个button。 它适用于我所需要的:

Sub FactSheetSaveToPDF() ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ "C:\" & Range("b2") & " - " & Month(Date) & "." & Day(Date) & "." & Year(Date) & "." _ & Hour(Time) & Minute(Time) & Second(Time) & ".pdf", Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, _ OpenAfterPublish:=True End Sub 

我现在需要做的是使用户只能使用这些button进行打印,出于合规的原因。 所以,无论是正常的打印是否被禁用,封锁,无论如何,这个Excel文档的用户应该只能打印一个工作表,如果他们点击button打印到PDF。 在这个macrosbutton之外不能有人打印。 CTRL + P,文件打印,全部不允许。

我看到一个答案,禁止所有打印,包括从macros观。 这是行不通的。 打印到PDFmacrosbutton需要工作。

我看到另一个答案,禁止用户可能打开的所有excel打印; 这对于一个人来说太过分了。 我只想从这个特定的Excel文档中禁用打印。

我假设我将不得不创build一些禁用所有打印的代码,然后修改打印button的macros是一个例外,或一些变化。

如果你没有注意到我的白话,我是一个初学者,如果是的话,在VBA。 尽量保持简单。 我非常感谢任何帮助。

简单。 在工作簿代码区使用这个:

 Private Sub Workbook_BeforePrint(Cancel As Boolean) Cancel = True End Sub 

这将停止用户,但在您的button代码:

 Sub FactSheetSaveToPDF() Application.EnableEvents = False ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ "C:\" & Range("b2") & " - " & Month(Date) & "." & Day(Date) & "." & Year(Date) & "." _ & Hour(Time) & Minute(Time) & Second(Time) & ".pdf", Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, _ OpenAfterPublish:=True Application.EnableEvents = True End Sub