从文本中提取数据并自毁
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 上,文件可以免费用于下一个文件)?
我目前正在一个使用 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 上,文件可以免费用于下一个文件)?