【发布时间】:2015-07-01 08:30:02
【问题描述】:
我目前正在一个使用 Excel VBA 的 Uni 项目中工作,我正在尝试找到一种方法来创建一个 Excel,如果它找不到“密钥”,它将自毁。如果这完全不可能,那么至少要确保没有留下任何数据或 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 位于同一文件夹中,并检查文档中的一个文本字符串是否与“公共常量”“代码”匹配在项目内部。
我一直在想办法在不打开“Key.txt”的情况下阅读它,但没有找到任何东西。
另一方面,我一直在测试使程序删除原始 excel 文件的各种方法,不同程度的成功。所以我一直在测试的一个有点迂回的方法是让 excel SaveAs 为“.xlsx”并在关闭之前擦除原始文件,但它并没有像我希望的那样工作。
这是我用于“自毁”方法的代码:
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
【问题讨论】:
标签: excel data-extraction vba