从文本中提取数据并自毁

Extract data from text and selfdestruct

我目前正在一个使用 Excel VBA 的 Uni 项目中工作,我正试图找到一种方法来创建一个 excel 如果它不自毁就会自毁的方法'找不到 "Key"。如果完全不可能,那么至少要确保还有 none 的数据或 VBA 的代码。

想法是,使用

Private Sub Workbook_Open()
    Dim direct As String, name As String
    name = ActiveWorkbook.Name
    ChDir ThisWorkbook.Path
    direct = ThisWorkbook.Path
    Call Checker(direct, name) 
End Sub

打开 excel 后,它会查找 "Key.txt",它应该与 excel 位于同一文件夹中,并检查文档中的一串文本是否与"Code" 这是项目内部的 "Public Const"。

我一直在尝试找到一种无需打开即可阅读 "Key.txt" 的方法,但没有找到任何东西。

另一方面,我一直在测试使程序删除原始 excel 文件的各种方法,取得了不同程度的成功。因此,我一直在测试的一种有点迂回的方法是让 excel 另存为“.xlsx”并在自行关闭之前删除原始文件,但它并没有像我希望的那样工作。

这是我用于 "Self-Destruct" 方法的代码:

Option Explicit
Function Checker(MyPath As String, name As String)

    On Error Resume Next
    Application.DisplayAlerts = False
    Dim myPath2 As String
    Dim ws As Worksheet
    Dim FSO As Object

    myPath2 = MyPath

    ActiveWorkbook.SaveAs Filename:=MyPath & "[=11=]_0.xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    Sheets.Add After:=Sheets(Sheets.Count)
    ActiveSheet.Name = "1"
    For Each ws In Worksheets  'Deletes all other sheets
        If ws.Name <> "1" Then ws.Delete
    Next

    Set FSO = CreateObject("scripting.filesystemobject")
    If Right(MyPath, 1) = "\" Then MyPath = Left(MyPath, Len(MyPath) - 1)
    If FSO.FolderExists(MyPath) = False Then MsgBox MyPath & " doesn't exist"

    FSO.deletefile MyPath & "\" & name, True  'Deletes original file

    ActiveWorkbook.Save
    ActiveWorkbook.Close

End Function

拥有自毁文件是一个有趣的想法。简短的回答是您不能删除 运行 VBA 宏。因此,没有 VBA 宏本质上可以自毁。然而,我可以想到两种选择:

(1) 删除除 运行 宏之外的所有内容。以下代码可能有助于实现这一目标。 http://www.erlandsendata.no/english/index.php?d=envbavbedeleteallmacros

(2) 关闭文件并要求Windows 之后使用任务计划器为您删除文件。 SO 上的以下 post 可能会对此有所帮助。 Using Excel vba Macro to be run through Windows Schedule Task

其他诱人的解决方案可能是将文件另存为 .xlsx 或创建一个新的 Excel 文件,将上述代码从选项 1 复制到该文件中,调用新创建的代码,这实际上删除了原始文件。

但我真正要问自己的问题是:这个人是怎么得到自毁文件的?是通过电子邮件发送的,文件仍在电子邮件中吗?文件是否被复制了?某些临时文件夹中是否有隐藏副本(请记住 Excel 每 xx 分钟自动安全以防计算机崩溃以保护您的工作)?打开文件时是否启用了宏(以允许自毁)?人们能否使用许多免费程序恢复文件以从 Windows 机器恢复文件(非常简单,因为 Windows 不会删除文件或在顶部写入加密数据以确保它无法恢复,但只是 "marks" space 在 HD 上,文件可以免费用于下一个文件)?