excel vba 判断给定文件夹中工作簿的宏是否被加密

假设我已经有一个vba代码来修改这些工作簿的宏 但是因为他们是加密的所以会报错
已知密码是111 有没有办法编写vba 在读取这些工作簿的时候实现
1.弹出输入密码对话框 手动输入密码 成功则访问宏进行接下来修改的步骤
或2.直接解除密码然后访问
来人啊我戳 冒着被老板发现的危险发帖子容易吗

第1个回答  2013-09-13
很久以前写的一个删除自身代码的过程,excel2003版的
Public Sub remove_module()
On Error Resume Next
If ThisWorkbook.VBProject.Protection = 1 Then ’1表示有密码保护
Application.VBE.CommandBars.FindControl(ID:=2578).Execute
Application.SendKeys "password" & "{Enter 2}", True
MsgBox "创建对象失败!", , "Warning!" ‘错误的假象,呵呵
End If
Application.DisplayAlerts = False
With ThisWorkbook.VBProject
.VBComponents.Remove .VBComponents("模块名称")
End With
Application.VBE.CommandBars.FindControl(ID:=3).Execute
Application.SendKeys "{Enter 2}", True
ThisWorkbook.Save
End Sub
第2个回答  2013-09-11
没办法用VBA直接打开,

ThisWorkbook.VBProject.Protection = vbext_pp_locked 这句会出错,
要把Excel里面的宏:安全性:可靠开发商:信任对于“Visual Basic项目”的访问勾选上

Private Sub Workbook_Open()
Dim pw$
pw = "1111"
If ThisWorkbook.VBProject.Protection = vbext_pp_locked Then
Application.VBE.CommandBars(1).Controls("工具(T)").Controls("VBAProject 属性(&E)...").Execute
Application.SendKeys "+{tab}"
Application.SendKeys "{Right}"
Application.SendKeys "{tab}{v}"
Application.SendKeys "{tab}"
Application.SendKeys pw & "{tab}"
Application.SendKeys pw & "{ENTER}"
DoEvents
End If
End Sub追问

这个不行 首先sendkey的文件只能手动关闭保存才能生效 直接close true什么的又会保护回来 其次就算你解除好了一个文件的保护这个code不能重复使用除非你把excel关了再开 效率还没直接一个一个文件取消保护高

这个不行 首先sendkey的文件只能手动关闭保存才能生效 直接close true什么的又会保护回来 其次就算你解除好了一个文件的保护这个code不能重复使用除非你把excel关了再开 效率还没直接一个一个文件取消保护高

本回答被网友采纳
第3个回答  2013-09-11
我记得VBProject.Protection = 0 表示没加密,1为加密
If ActiveWorkbook.VBProject.Protection = 0 Then
Application.VBE.CommandBars(1).Controls("工具(T)").Controls("VBAProject 属性(&E)...").Execute
Application.SendKeys pw & "{ENTER}{ENTER}"追问

你这代码好像有问题啊 会报错

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网