从文本中提取数据并自我修建

时间:2015-07-01 08:30:03

标签: excel-vba data-extraction vba excel

我目前正在使用Excel VBA的Uni项目工作,我正在尝试找到一种创建excel的方法,如果它找不到“Key”,它将自毁。如果完全不可能,那么至少要确保没有剩下的数据或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 Const”匹配“Code”在项目内部。

我一直试图找到一种方法来阅读“Key.txt”而不打开它,但没有发现任何东西。

另一方面,我一直在测试各种使程序删除原始excel文件的方法,不同程度的成功。因此,我一直在测试的一种稍微迂回的方式是将excel SaveAs作为“.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 & "\0_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

1 个答案:

答案 0 :(得分:2)

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

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

(2)关闭文件,然后让Windows使用任务计划程序为您删除文件。关于SO的以下帖子可能有助于此。 Using Excel vba Macro to be run through Windows Schedule Task

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

但我问自己的真正问题是:这个人是如何获得自毁文件的?是通过电子邮件,文件仍然在电子邮件中?文件是否一路复制?某些临时文件夹中是否有隐藏副本(如果计算机崩溃,请每隔xx分钟记住Excel自动保护以保留您的工作)?是否在打开文件时启用宏(允许自毁)?这个人可以使用许多免费程序来恢复文件以从Windows机器恢复文件(非常简单,因为Windows不会删除文件或在顶部写入密码数据以确保无法恢复,但仅仅是&#34;标记& #34; HD上的那个空间,文件可以自由地用于下一个文件)?