Board logo

标题: [问题求助] 这个VBS给WORD取消密码怎么不成功? [打印本页]

作者: ww0000    时间: 2015-1-20 14:39     标题: 这个VBS给WORD取消密码怎么不成功?

  1. Const WINDOW_HANDLE = 0
  2. Const OPTIONS = 0
  3. Dim objShell,objFolder,FolderPath,pw,wk,EAPP,FSO,FSOFolder,FSOFile
  4. '获取Excel文件所在文件夹路径
  5. Set objShell = CreateObject("Shell.Application")
  6. Set objFolder = objShell.BrowseForFolder(WINDOW_HANDLE, "Select a folder:", OPTIONS,"")
  7. If objFolder Is Nothing Then
  8. Wscript.Quit
  9. End If
  10. FolderPath =objFolder.Self.Path
  11. PW=Inputbox("请输入密码","批量去除密码")
  12. if len(PW)=0 then Wscript.Quit
  13. Set EAPP=CreateObject("Word.Application")
  14. Set FSO=CreateObject("Scripting.FileSystemObject")
  15. Set FSOFolder=FSO.GetFolder(FolderPath)
  16. For Each FSOFile in FSOFolder.Files
  17. If instr(Fsofile.Name,".doc") then
  18.     Set wk=EAPP.Documents.Open(FSOFile.Path,,,,pw)
  19.     wk.Password=""
  20.     wk.Close True
  21. End If
  22. Next
  23. EAPP.Quit
复制代码

作者: apang    时间: 2015-1-20 20:37

  1. Const WINDOW_HANDLE = 0
  2. Const OPTIONS = 0
  3. Set objShell = CreateObject("Shell.Application")
  4. Set objFolder = objShell.BrowseForFolder(WINDOW_HANDLE, "Select a Folder:", OPTIONS, &h00)
  5. If objFolder is Nothing Then WScript.Quit
  6. strPath = objFolder.Self.Path
  7. strPwd = Inputbox("请输入密码","批量去除密码")
  8. If Len(strPwd) = 0 Then WScript.Quit
  9. Set objWord = CreateObject("Word.Application")
  10. objWord.Visible = true
  11. Set colItems = objShell.NameSpace(strPath).Items
  12. For Each objItem in colItems
  13.         If Left(objItem.Type,21) = "Microsoft Office Word" Then
  14.                 Set objDoc = objWord.Documents.Open(objItem.Path,,,,strPwd)
  15.                 objDoc.Password = ""
  16.                 objWord.selection.TypeText " "
  17.                 objWord.selection.TypeBackSpace
  18.                 objDoc.SaveAs objItem.Path
  19.                 objDoc.Close True
  20.         End If
  21. Next
  22. objWord.Quit
  23. MsgBox "OK"
复制代码
win7 32bit + ms word 2007 测试正常
作者: ww0000    时间: 2015-1-21 08:21

回复 2# apang


    老师,密码不能删除!1
作者: DAIC    时间: 2015-1-21 09:02

回复 3# ww0000


    什么操作系统?Office版本呢?
作者: ww0000    时间: 2015-1-21 09:06

回复 4# DAIC


    XP系统,Office2003
作者: ww0000    时间: 2015-1-21 09:10

回复 4# DAIC


    是不是宏工具里面的工具---引用  没引用? 但加密都可以加的呀!
作者: DAIC    时间: 2015-1-21 09:12

回复 6# ww0000


    不清楚,我已经很长时间不使用XP了,没用这样的环境,无法测试。
作者: ww0000    时间: 2015-1-21 09:13

回复 7# DAIC


    上面的代码在W7系统测试成功吗?
作者: DAIC    时间: 2015-1-21 09:22

回复 8# ww0000


    请看2楼最后一行文字
作者: apang    时间: 2015-1-21 10:09

objItem.Type 在 office 2003 上显示的字串不一样,算了,还是fso遍历吧
  1. Const WINDOW_HANDLE = 0
  2. Const OPTIONS = 0
  3. Set objShell = CreateObject("Shell.Application")
  4. Set objFolder = objShell.BrowseForFolder(WINDOW_HANDLE, "Select a Folder:", OPTIONS, &h00)
  5. If objFolder is Nothing Then WScript.Quit
  6. strPath = objFolder.Self.Path
  7. strPwd = Inputbox("请输入密码","批量去除密码")
  8. If Len(strPwd) = 0 Then WScript.Quit
  9. Set objWord = CreateObject("Word.Application")
  10. objWord.Visible = true
  11. Set fso = CreateObject("Scripting.FileSystemObject")
  12. For Each file in fso.GetFolder(strPath).Files
  13.         strExt = fso.GetExtensionName(file)
  14.         If LCase(Left(strExt, 3)) = "doc" Then
  15.                 Set objDoc = objWord.Documents.Open(file.Path,,,,strPwd)
  16.                 objDoc.Password = ""
  17.                 objWord.selection.TypeText " "
  18.                 objWord.selection.TypeBackSpace
  19.                 objDoc.SaveAs file.Path
  20.                 objDoc.Close True
  21.         End If
  22. Next
  23. objWord.Quit
  24. MsgBox "OK"
复制代码

作者: ww0000    时间: 2015-1-21 11:47

回复 10# apang


    终于成功,谢谢老师!!




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2