吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8192|回复: 31
收起左侧

[其他原创] [VBS]去除WORD文档限制编辑

  [复制链接]
老刘 发表于 2019-10-30 11:47
Usage
手动:选中Word文档拖拽到VBS文件上(支持拖拽多个)。
命令行:Cscript -nologo VBS路径 Word文档1 Word文档2 ...

[Visual Basic] 纯文本查看 复制代码
Rem Code By 老刘
Rem 转载请标明作者

Option Explicit
Const wdNewBlankDocument = 0 '空白新文档
Const wdFormatXMLDocument = 12 '.DOCX
Const wdFormatFlatXML = 19 '.XML

Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Dim objXmlDom
Set objXmlDom = CreateObject("Microsoft.XMLDOM")
Dim objWord
On Error Resume Next
Set objWord = GetObject(,"Word.Application") '已有word运行则直接得到对象
If Err.Number <> 0 Then
        Err.Clear
        Set objWord = CreateObject("Word.Application")
        If Err.Number <> 0 Then
                If UCase(fso.GetBaseName(WScript.FullName)) = "CSCRIPT" Then
                        WScript.StdErr.WriteLine "老刘的温馨提示:Word的COM自动化组件无法创建!"
                Else
                        MsgBox "Word的COM自动化组件无法创建!",vbQuestion,"老刘的温馨提示"
                End If
                WScript.Quit 1
        End If
End If
On Error Goto 0

Dim objWordDocument,strArg,objXmlDocument,objProtecctionNodes,objProtecctionNode
For Each strArg In WScript.Arguments
        Rem 文档→XML。
        With objWord
                Set objWordDocument = fso.GetFile(strArg)
                .ChangeFileOpenDirectory objWordDocument.ParentFolder & "\"
                .Documents.Open objWordDocument.Name, False, True
                .ChangeFileOpenDirectory Fso.GetSpecialFolder(2) & "\"
                .ActiveDocument.SaveAs2 _
                        fso.GetBaseName(objWordDocument.Path)&".XML", _
                        wdFormatFlatXML
                .ActiveDocument.Close
                Set objXmlDocument = _
                        fso.GetFile( _
                        fso.GetSpecialFolder(2) & "\" & _
                        fso.GetBaseName(objWordDocument.Path) & ".XML" _
                        )
        End With
        
        Rem 去除w:documentProtection节点。
        With objXmlDom
                .load objXmlDocument.Path
                Set objProtecctionNodes = .getElementsByTagName("w:documentProtection")
                If objProtecctionNodes.length = 0 Then
                        If UCase(fso.GetBaseName(WScript.FullName)) = "CSCRIPT" Then
                                WScript.StdErr.WriteLine objWordDocument.Name&" 未被限制编辑"
                        End If
                Else
                        For Each objProtecctionNode In objProtecctionNodes
                                objProtecctionNode.parentNode.removeChild(objProtecctionNode)
                        Next
                End If
                .save objXmlDocument.Path
                .abort
        End With
        
        Rem XML→DOCX。
        With objWord
                .Documents.Open objXmlDocument.Name
                .ChangeFileOpenDirectory objWordDocument.ParentFolder & "\"
                .ActiveDocument.SaveAs2 _
                        "[Unlocked]"&fso.GetBaseName(objWordDocument.Path)&".DOCX", _
                        wdFormatXMLDocument
                .ActiveDocument.Close
                objXmlDocument.Delete True
        End With
Next

objWord.Visible = True
Set fso = Nothing
Set objXmlDom = Nothing
Set objWord = Nothing '该操作不会关闭Word
WScript.Echo "老刘的提醒:由于要保证处理速度(开关WORD太费时),不使用时请手动退出WORD。"

免费评分

参与人数 5吾爱币 +6 热心值 +5 收起 理由
熟薯 + 1 + 1 word2019测试好用,源文件带密码保护。05-MAR-2020
ymhld + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
hyshen + 1 鼓励原创
wushaominkk + 3 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
anandyuan + 1 + 1 鼓励转贴优秀软件安全工具和文档!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 老刘 发表于 2019-10-30 22:06
myqqq 发表于 2019-10-30 20:26
把文件拖拽到VBS就这样啊,没反应

已经将解锁完的文件放到同一目录了
代码执行完成界面才显示的
andy90 发表于 2020-3-12 18:59
本帖最后由 andy90 于 2020-3-12 19:05 编辑

1.png
出错了,怎么解决,老大。

找到问题所在了,记事本另存为vbs时要把右下角的编码选为ANSI。
已经可以正常使用了,谢谢老大。
试过,可以去除word2016格式docx文档的限制编辑。
御剑行 发表于 2019-10-30 11:52
cdwdz 发表于 2019-10-30 12:41
楼主不能继续整理整理 做成软件吗   小白看了发憷哦
 楼主| 老刘 发表于 2019-10-30 17:35
cdwdz 发表于 2019-10-30 12:41
楼主不能继续整理整理 做成软件吗   小白看了发憷哦

直接保存为VBS就可以用了呀
myqqq 发表于 2019-10-30 20:26
微信截图_20191030202509.png
微信截图_20191030202521.png
把文件拖拽到VBS就这样啊,没反应
ISHAO 发表于 2019-11-7 19:33
我放上去报错呀,错误是vbscript编译器错误,未结束的字符串常量,是为啥呢
 楼主| 老刘 发表于 2019-11-7 22:09
本帖最后由 老刘 于 2020-2-7 09:24 编辑
ISHAO 发表于 2019-11-7 19:33
我放上去报错呀,错误是vbscript编译器错误,未结束的字符串常量,是为啥呢

emm,你可以做以下检查
1、word(微软的)是否正常安装
2、vbs保存时候的编码是不是ANSI(记事本另存为的时候可以选)
hyshen 发表于 2019-11-8 14:36
学习了,老刘的代码很规整,看起来舒服。
ISHAO 发表于 2019-11-8 16:36
老刘 发表于 2019-11-7 22:09
emm,你可以做以下检查
1、word(微软的或WPS)是否正常安装
2、vbs保存时候的编码是不是ANSI(记事本 ...

好的,谢谢了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 13:47

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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