zoukankan      html  css  js  c++  java
  • VBA 宏文件源代码密码解除

    VBA Project密码解除
    第一种方法详细步骤参考:
    以下VBA代码是第二种方法

    '使用本代码之前需要将需要解除密码保护的含有宏的Excel文件(如果是xlsm文件,需要先另存为97-03版的xls文件)关闭
    '新建一个Excel工作簿,Alt+F11 打开VBA编辑器,新建一个模块 ,复制以下代码
    '移除VBA编码保护
    Sub MoveProtect()
        Dim FileName As String
        FileName = Application.GetOpenFilename("Excel文件(*.xls & *.xla),*.xls;*.xla", , "VBA破解")
        If FileName = CStr(False) Then
           Exit Sub
        Else
           VBAPassword FileName, False
        End If
    End Sub
     
    '设置VBA编码保护
    Sub SetProtect()
        Dim FileName As String
        FileName = Application.GetOpenFilename("Excel文件(*.xls & *.xla),*.xls;*.xla", , "VBA破解")
        If FileName = CStr(False) Then
           Exit Sub
        Else
           VBAPassword FileName, True
        End If
    End Sub
     
    Private Function VBAPassword(FileName As String, Optional Protect As Boolean = False)
          If Dir(FileName) = "" Then
             Exit Function
          Else
             FileCopy FileName, FileName & ".bak"
          End If
     
          Dim GetData As String * 5
          Open FileName For Binary As #1
          Dim CMGs As Long
          Dim DPBo As Long
          For i = 1 To LOF(1)
              Get #1, i, GetData
              If GetData = "CMG=""" Then CMGs = i
              If GetData = "[Host" Then DPBo = i - 2: Exit For
          Next
          If CMGs = 0 Then
             MsgBox "请先对VBA编码设置一个保护密码...", 32, "提示"
             Exit Function
          End If
          If Protect = False Then
             Dim St As String * 2
             Dim s20 As String * 1
             '取得一个0D0A十六进制字串
             Get #1, CMGs - 2, St
             '取得一个20十六制字串
             Get #1, DPBo + 16, s20
             '替换加密部份机码
             For i = CMGs To DPBo Step 2
                 Put #1, i, St
             Next
             '加入不配对符号
             If (DPBo - CMGs) Mod 2 <> 0 Then
                Put #1, DPBo + 1, s20
             End If
             MsgBox "文件解密成功......", 32, "提示"
          Else
             Dim MMs As String * 5
             MMs = "DPB="""
             Put #1, CMGs, MMs
             MsgBox "对文件特殊加密成功......", 32, "提示"
          End If
          Close #1
    End Function
     
  • 相关阅读:
    DAOFactory复用代码
    WebUtils复用代码【request2Bean、UUID】
    过滤器复用代码【中文乱码、HTML转义】
    数据库复用代码【c3p0配置文件、数据库连接池】
    分页复用代码【Page类、JSP显示页面】
    AJAX应用【股票案例】
    JavaScript中的for in循环
    JSON【介绍、语法、解析JSON】
    javaScript【创建对象、创建类、成员变量、方法、公有和私有、静态】
    DOM【介绍、HTML中的DOM、XML中的DOM】
  • 原文地址:https://www.cnblogs.com/karkash/p/11617683.html
Copyright © 2011-2022 走看看