當前位置:法律諮詢服務網 - 知識產權保護 - Excel 請問如何破解VBA工程不可查看

Excel 請問如何破解VBA工程不可查看

BA代碼作為知識產權的重要內容,越來越受到高度重視。但VBA工程的保護相對而言是比較脆弱的。

我這兒有壹份文件,是通過加密技術將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

  • 上一篇:美國版權法的歷史和細節
  • 下一篇:農民頻道的熱線電話是多少(很有幫助)?
  • copyright 2024法律諮詢服務網