ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 12445|回复: 12

[求助] 怎么用VBA批量解除WORD密码

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-7-20 09:43 | 显示全部楼层 |阅读模式
测试.rar (81.79 KB, 下载次数: 60) 有很多WORD文档,但都有密码保护,编辑不了页眉页脚,知道WORD的密码,密码是123,一个个取消密码保护太麻烦了,怎么用VBA批量解除?批量处理一个文件夹下(包括子文件夹)的所有word,但还些是没有密码的, 在同个文件夹下还有各种格式的文件,都忽略处理,就只处理带密码的word。
下面的这个我看不懂,试了也不成功,所以想请教高手,帮忙改下或者重新写,非常感谢!我用的是word 2003
可以参考下面的网址:http://zhidao.baidu.com/question/159094135.html?fr=ala0

参考内容如下:
可以试试用如下步骤批量去除密码保护:

1、首先在Word里面打开原始文档;
2、键入Alt+F11打开VBA编辑器;
3、选择菜单命令“插入-模块”;
4、在代码编辑区中输入如下代码:
Option Explicit

Sub UnProtectAllDocFiles()

    On Error Resume Next

    Const strRootPath = "c:\Temp\docs\protected\"          ' 存放文档的目录
    Const strPassword = "1234"           ' 密码

    Dim oDoc As Document
    Dim fso, oFolder, oFile

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set oFolder = fso.GetFolder(strRootPath)
    For Each oFile In oFolder.Files
        Set oDoc = Documents.Open(FileName:=oFile.Path, PasswordDocument:=strPassword)
        oDoc.Saved = False
        oDoc.SaveAs2 FileName:=oFile.Path, Password:="", WritePassword:=""
        oDoc.Close
    Next

    MsgBox "完成!"

End Sub

5、根据你的实际情况,修改代码中的文件目录和密码。
6、注意上面代码适用于Word2010,如果你的Word是2003或者2007的话,需要把oDoc.SaveAs2...这句话改成oDoc.SaveAs...。
7、键入F5,运行直到提示“完成!”。
8、检查该目录下的所有文件是否都已取消密码。

注意,我这里假定那个指定的目录下放的全部文件都是被用同一个密码加了密的Word文件,没有任何其它文件。

______________________
补充:
刚才另外一个朋友说运行没有效果。我仔细看了一下,可能是因为我用了Word2010特有的函数。现在把上面的代码改了一下,再试试看吧!

______________________
再补充:
用下面这个代码,可以递归处理子目录下面的文件:
Option Explicit

Sub UnProtectAllDocFiles()

    On Error Resume Next

    Const strRootPath = "c:\Temp\docs\Help\BatchUnprotect\"     ' 存放所有文件的目录,可以有子目录

    Dim fso, oFolder

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set oFolder = fso.GetFolder(strRootPath)
    UnProtectDocFilesUnderFolder oFolder

    MsgBox "完成!"

End Sub

Sub UnProtectDocFilesUnderFolder(oFolder)
   
    On Error Resume Next
   
    Dim oSubFolder, oFile
    Dim oDoc As Document
    Const strPassword = "password"     ' 统一的密码

    For Each oSubFolder In oFolder.SubFolders
        UnProtectDocFilesUnderFolder oSubFolder

        For Each oFile In oSubFolder.Files
            Set oDoc = Documents.Open(FileName:=oFile.Path)
            oDoc.Unprotect strPassword
            oDoc.Close True
        Next
    Next
End Sub

把鼠标在第一个Sub函数里面点一下,然后F5运行即可。

TA的精华主题

TA的得分主题

发表于 2010-7-20 23:46 | 显示全部楼层

回复 1楼 浪子神剑英 的帖子

还是让版主帮你解决

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-7-21 00:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
版主好像没看到啊……

TA的精华主题

TA的得分主题

发表于 2010-7-21 23:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
测试RemovePassWord.rar

测试RemovePassWord.rar

168.31 KB, 下载次数: 207

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-7-22 08:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢!但得把要处理的文档放在一个“测试”的文件夹内才能处理对吧。,还有要是不知道密码的情况下能解密吗?
111.jpg   还有问题显示这种错误,有没有去除错误的方法,或者遇到错误时就跳过之类的……

[ 本帖最后由 浪子神剑英 于 2010-7-22 09:05 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-7-22 15:29 | 显示全部楼层
只能 解决批量 解密码是 123 的文档。

[ 本帖最后由 zpy2 于 2010-7-22 15:43 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-7-23 09:45 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
解密码是 123 的文档?既然是解密,一定是不知密码哟!

TA的精华主题

TA的得分主题

发表于 2010-7-23 14:11 | 显示全部楼层
请楼主参考一下此帖:
批量设置、解除所有选定文档的“打开文件时的密码”
http://club.excelhome.net/viewth ... ngqingfu&page=1
弄错了,没看清楼主的帖子,此链接权当是共享吧!

[ 本帖最后由 tangqingfu 于 2010-7-23 14:22 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-7-23 14:17 | 显示全部楼层
谢谢楼主的分享,学习&测试!

[ 本帖最后由 tangqingfu 于 2010-7-23 14:20 编辑 ]

TA的精华主题

TA的得分主题

发表于 2012-8-23 17:18 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
thank you for study
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-12 10:48 , Processed in 0.025600 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表