限制打印份数

我有5台电脑和两台打印机通过局域网连接。 在其中一台计算机(不共享)中有一个特定的excel文档,我希望限制可打印的副本的数量为4个。这意味着用户不能打印超过4个该文档的副本。

我知道复印(和更多)的漏洞,但我仍然希望打印出来的复印件数量有限或有限。

我已经浏览了一些印刷控制软件的function,但是我知道他们都有一个“配额”系统,用户在超出限制后必须付印刷费。 恐怕这不会为我工作。

我也读了一个类似的问题在这里发布的答案, 设置每个工作表的副本数量

谢天谢地,这个答案帮了我很大的忙,除了我不知道如何限制或限制用户打印超出指定的数字。

我也看过很多答案,说限制拷贝数是不可能的,但是我仍然希望寻求帮助 – 也许有一些解决办法可能会出现。

我对计算机/打印机编程没有太多深入的了解。虽然不是专业人士,但我对excel vba有点熟悉。

请让我知道,如果有任何解决scheme,

只要我find一些东西,我会在这里发布。

谢谢你的帮助。

这是一个粗略的解决scheme,但这会增加打印数量的一些限制…

放在这个工作ThisWorkbook

 Private Sub Workbook_BeforePrint(Cancel As Boolean) Cancel = True If Cancel = True Then MsgBox "Please use the print button on Sheet1." End If End Sub 

添加一个CommandButton并将其重命名为PrintButton然后将此子例程(和随附的函数)插入到Module

 Private Sub PrintButton_Click() On Error Resume Next Application.EnableEvents = False If (CanWePrint(4)) Then ActiveSheet.PrintOut Else MsgBox ("Sorry this is the maximum number of prints for this document!") End If Application.EnableEvents = True On Error GoTo 0 End Sub Function CanWePrint(ByVal MaxPrintVal As Integer) As Boolean Dim CurrentPrintCount As String, SecretFile As String 'PLEASE CHANGE TO YOUR "SECRET" TXT FILE NAME AND LOCATION! SecretFile = "C:\Users\Matt\Documents\countPrint.txt" CurrentPrintCount = GetCount(SecretFile) If (CurrentPrintCount < MaxPrintVal) Then Call UpdatePrintCount(CurrentPrintCount, SecretFile) CanWePrint = True Else CanWePrint = False End If End Function Function GetCount(ByVal SecretFile As String) As Integer Dim nSourceFile As Integer Dim sText As String Close nSourceFile = FreeFile Open SecretFile For Input As #nSourceFile sText = Input$(LOF(1), 1) Close GetCount = CInt(sText) End Function Sub UpdatePrintCount(ByVal CurrentVal As Integer, ByVal SecretFile As String) Dim sBuf As String Dim sTemp As String Dim iFileNum As Integer iFileNum = FreeFile Open SecretFile For Input As iFileNum Do Until EOF(iFileNum) Line Input #iFileNum, sBuf sTemp = sTemp & sBuf & vbCrLf Loop Close iFileNum sTemp = Replace(sTemp, CurrentVal, CurrentVal + 1) iFileNum = FreeFile Open sFileName For Output As iFileNum Print #iFileNum, sTemp Close iFileNum End Sub 

这是做什么的

此代码将禁用该工作簿的Excel中的标准打印选项。 通过添加CommandButton您可以创build一个手动打印选项来检查存储在.txt文件中的打印计数,这意味着文档可以closures并重新打开,并且仍然只能打印4次。

你需要做什么

  • 在本文档所在的同一台机器上创build一个新的txt文件,并在CanWePrint中的上面的代码中更新path。

缺点

就像我说的那样,这是一个粗略的解决scheme,围绕这个问题会有很多方法:

  • 手动更改.txt文件中的值
  • 保存没有VBA的工作簿
  • 禁用VBA

这并不简单,对我来说非常复杂:)我没有提到的缺点。 代码工作正常,当我粘贴在工作表1,而不是一个模块。 Theres一个虽然抓住这里,Matts代码是好的一个文件..我有什么是像文件的空模板(保存为macros启用Excel工作簿,但工作像我的模板)必须填写和打印,再次,但我需要避免重复,因此不超过4份。

所以我试过的是,我用键盘快捷键创build了一个macros。 这个macros是这样的:

  1. 它需要4打印输出。
  2. 它在文件中插入一个水印(因此将其标记为无效)
  3. 它将选定的范围导出为pdf并保存到我指定的文件夹中(因此所有保存的pdf都有水印,不可能在Adobe Reader中将其擦除)
  4. 它清除水印,清除所有input的数据,从而提供下一次创build的新文档。 这是为我工作,除了任何人都可以打印任何数量的副本,如果他们不使用我的捷径。 但Matts答案中的“beforeprint”代码将被解决。 所以非常感谢马特! 正如你所提到的,可以有更多的办法解决这个问题,我会继续工作,现在这应该为我工作。

请让我知道,如果我的方式是好的,如果有任何循环..谢谢!