vba或xla文件 密码移除(from internet)

0.先备份 你”已忘记密码偷笑“的xla宏文件,或excel文件


1. 使用UltreEdit之类的十六进制编辑程序打开.XLS文件,在文本模式下查找“[Host Extender Info]”



2. 刚才定位的位置切换到十六进制模式

  将前面的“DBP="XXXXXXX...”的DBP关键字改成CBP,

 将“GC="XXXXXXX...”的GC关键字改成CC,(其它亦可)


使Excel不能识别此二项!存盘即可!!!

  用Excel打开此文件,忽略错误提示,



进入VBA编辑器,嘿嘿,密码没有了!

做一次存盘操作即可修复错误提示。   


另网络上给出的一段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    '读取文件内容到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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值