我這兒有壹份文件,是通過加密技術將VBA工程鎖定為不可查看,全“程”含壹個標準模塊和三個過程約75行代碼,作為測試文檔,求破解。
VBA工程保護密碼為"shourou".
如果您對此感興趣,歡迎破解!
註意:應能完整破解該工程,即還原該VBA工程,而非僅僅讀取或者查看到其中的過程名稱或者模塊名稱。
代碼還是能dump出來的
Module: ----------------------------------- mdlVBA -----------------------------------
Attribute VB_Name = "mdlVBA"
Option Explicit ''''顯式變量聲明
Option Private Module ''''外部工程禁用
Public Const gstrUSER_MSG_TITLE As String = "ExcelHome.Net"
Private Function FieldsExists(intWsIndex As Integer, Optional blnDisplayAlerts As Boolean = True) As Boolean
''''功能:檢查指定工作表的字段名稱與內置字段名稱是否匹配
''''參數:intWsIndex:=工作表索引;blnDisplayAlerts:=不匹配時是否彈出警告對話框
Dim Ws As Excel.Worksheet
Dim astrFieldNames() As String
Dim vntHeader As Variant
Dim I As Integer
Dim intColumnSize As Integer
On Error GoTo ErrorHandler
Select Case intWsIndex
Case 1
Set Ws = Sheet1
intColumnSize = 10 ''''字段數量
ReDim astrFieldNames(1 To intColumnSize)
astrFieldNames(1) = "OfficeID"
astrFieldNames(2) = "OfficeName"
astrFieldNames(3) = "Region"
astrFieldNames(4) = "Province"
astrFieldNames(5) = "City"
astrFieldNames(6) = "Address"
astrFieldNames(7) = "StartData"
astrFieldNames(8) = "ExpiryData"
astrFieldNames(9) = "OfficeArea"
astrFieldNames(10) = "Reviser"
End Select
vntHeader = Ws.Cells(1, 1).Resize(1, intColumnSize).Value ''''標題行
For I = 1 To intColumnSize
If Not StrComp(vntHeader(1, I), astrFieldNames(I), vbTextCompare) = 0 Then Exit For
Next
If I > intColumnSize Then
FieldsExists = True
Else
If blnDisplayAlerts = True Then
MsgBox Ws.Name & Chr$(34) & vntHeader(1, I) & Chr$(34) & "與標準字段名" & Chr$(34) & astrFieldNames(I) & Chr$(34) & "不匹配。", vbExclamation, gstrUSER_MSG_TITLE
End If
End If
On Error GoTo 0
Exit Function
ErrorHandler:
If ExcelHomeErrorHandler("Private Function FieldsExists") = True Then Resume Next
End Function
Public Function FileExists(strFileName As String) As Boolean
''''功能:判斷文件或者文件夾是否存在
''''參數:strFileName:=待考查的文件或者文件夾的完整路徑
FileExists = (Len(Dir(strFileName, vbDirectory)) > 0)
End Function
Public Function ExcelHomeErrorHandler(strProcName As String) As Boolean
''''功能:錯誤處理程序
''''參數:strProcName:=出錯的過程名稱
Dim strErrMessage As String
strErrMessage = "程序運行在" & Chr$(34) & strProcName & Chr$(34) & "過程時發生錯誤。" & vbCrLf & _
"錯誤時間:" & Now & vbCrLf & _
"錯誤代號:" & Err.Number & vbCrLf & _
"錯誤原因:" & Err.Description
Err.Clear ''''清除錯誤
If MsgBox(strErrMessage & vbCrLf & "是否繼續?", vbExclamation + vbYesNo, gstrUSER_MSG_TITLE) = vbYes Then
ExcelHomeErrorHandler = True
Else
With Application
.StatusBar = False ''''清空狀態欄
.DisplayAlerts = True ''''恢復警告對話框
.EnableEvents = True ''''恢復事件
.ScreenUpdating = True ''''恢復屏幕更新
End With
ExcelHomeErrorHandler = False
End If
End Function