我搜索了网站,找不到答案。
背景:我将此宏作为工作表上的按钮。它适用于我需要的东西:
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
我现在需要做的是使用户只能使用这些按钮进行打印,这是出于合规性原因。因此,无论正常打印是禁用,阻止还是其他,此excel文档的用户只有在按下按钮打印到PDF时才能打印工作表。没有人能够在此宏按钮之外打印。 CTRL + P,文件打印,都不允许。
我看到一个禁用所有打印的答案,包括宏。这不行。 Print-to-PDF宏按钮需要工作。
我看到另一个答案禁用了用户可能打开的所有excel的所有打印;这对一个人来说太强大了。我只想从这个特定的Excel文档中禁用打印。
我假设我将不得不创建一些禁用所有打印的代码,然后将打印按钮的宏修改为例外或其中的一些变体。
如果你没有注意到我的白话,我是初学者,如果那样,在VBA。尽量保持简单。我非常感谢任何帮助。
答案 0 :(得分:1)
易。在工作簿代码区域中使用它:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Cancel = True
End Sub
这将停止用户,但在您的按钮代码中:
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