В настоящее время я работаю над проектом Uni, используя Excel VBA, и я пытаюсь найти способ создать 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, и проверять, совпадает ли одна строка текста внутри документа с «Code», который является «Public Const» внутри проекта. .
Я пытался найти способ прочитать «Key.txt», не открывая его, но ничего не нашел.
С другой стороны, я тестировал различные способы заставить программу удалить исходный файл Excel с разным уровнем успеха. Таким образом, несколько окольный способ, который я тестировал, состоит в том, чтобы сохранить Excel как «.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