我有5台计算机和两台通过LAN连接的打印机。其中一台计算机(未共享)中有一个特定的Excel文档,我希望将可打印的副本数量限制为4.意味着用户不应该打印超过4份该文档。
我知道影印(以及更多)的漏洞,但我仍然希望打印副本能够以受控或有限的数量出现。
我已经浏览了一些打印控制软件的功能,但我了解到他们都有一个"配额"用户必须在超过限制后支付打印费用的系统。我担心这对我不起作用。
我还阅读了此处发布的类似问题的答案,Set number of copies per worksheet
值得庆幸的是,这个答案对我很有帮助,除了我不知道如何限制或限制用户将打印输出超出指定的数量。
我也读过许多答案,说限制复制数量几乎是不可能的,但我仍然希望寻求帮助 - 也许可以提出一些解决方案。
我对计算机/打印机编程知之甚少。虽然不是专业人士,但我对excel vba有点熟悉。
请告诉我是否有任何解决方案,
一旦我发现了某些内容,我就会在这里发布。
非常感谢你的帮助。
答案 0 :(得分:0)
这是一个粗略的解决方案,但这会在打印数量上添加一些限制......
放在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
,您可以创建一个手动打印选项,该选项将检查存储在.txt
文件中的打印计数,这意味着文档可以关闭并重新打开,但仍然只打印4次。
CanWePrint
中更新上述代码中的路径。就像我说的那样,这是一个粗略的解决方案,并且有很多方法可以解决这个问题:
.txt
文件答案 1 :(得分:0)
这一点都不粗糙,对我来说非常复杂:)我对提到的缺点没问题。当我将它粘贴在表1而不是模块中时,代码工作正常。虽然这里有一个问题,Matts代码对于一个文件是好的..我有一个像文件一样的空模板(保存为启用宏的excel工作簿,但对我来说像模板一样工作),必须填写并重新打印,再次,但我需要避免重复,因此不超过4份。
所以我试过的是, 我用键盘快捷键创建了一个宏。这个宏执行此操作:
如果我的方式很好并且有任何循环,请告诉我.. 谢谢!