前些日子碰到一個問題,接手到一批資料。全部都是加密了的word文檔,還好密碼是統(tǒng)一的。這些資料是要上傳到平臺上共享的,總不能說還要備注說密碼是多少,而且和平臺上其他不加密的文件放在一起,有的是加密的,有的又是不加密的,多影響用戶體驗,你說是不是。
難道我們要一個一個打開,然后選項-文檔保護(hù)-取消密碼...?答案當(dāng)然是NO。寫這一篇文章主要是因為網(wǎng)上并沒有很完善的解決方案,或者是方案過于久遠(yuǎn),對于目前的系統(tǒng)和軟件版本來說已經(jīng)不適用??赡苡玫降膱鼍安欢啵侨f一遇到了呢?所以還是寫出來作為一個分享,以后我也會在這個專題里寫一些有趣的工作小技巧,專治各種疑難雜癥。開個玩笑,教程開始。
首先了解一下什么是VBA。Visual Basic for Applications(VBA)是Visual Basic的一種宏語言,是微軟開發(fā)出來在其桌面應(yīng)用程序中執(zhí)行通用的自動化(OLE)任務(wù)的編程語言。簡單的說,就是利用VBA,可以爆發(fā)出你office軟件的洪荒之力。你想不到word也能幫你批量去完成一系列的任務(wù)是吧?
一、如何啟動VBA
首先,啟動你的word
啟動完成后如果你和我一樣是2013版的會是這樣
嘿嘿,不小心看到了我的最近文檔了是吧。最近在打算也做一套自己的編曲教程,如果有喜歡音樂的朋友可以關(guān)注。
好了,點擊一下空白文檔,進(jìn)入熟悉的界面
這時候重點來了,按鍵盤的
ALT+F11
就可以進(jìn)入VBA編程界面了
如果對于VBA編程感興趣的話,我考慮要不要寫一套VBA入門系列,但是在這里的話,我就直接提供了我的代碼。各位無需知道具體的實現(xiàn)原理(其實原理也很簡單),復(fù)制我的代碼,點擊插入-模塊,粘貼即可。
其中有需要改動的參數(shù)如下
路徑:
把引號“C:\Users\斷夢霜丶躚塵\Desktop\新建文件夾”里面的內(nèi)容替換成你存放word文檔的路徑(支持子目錄)
密碼
把 Const strPassword = "2009" 中引號2009改為這批word文檔的密碼。
最后一步
在代碼窗口的右上角選中
UnProtectAllDocFiles
這時候可以按鍵盤上的F5運(yùn)行直到提示完成即可。是不是很方便呢?
注意
如果程序出現(xiàn)了未知的問題,按ctrl+pause break強(qiáng)行停止運(yùn)行即可。
代碼如下
Option Explicit
Sub UnProtectAllDocFiles()
On Error Resume Next
Const strRootPath = "C:\Users\斷夢霜丶躚塵\Desktop\新建文件夾" ' 存放所有文件的目錄,可以有子目錄
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 = "2009" ' 這里輸入word密碼
For Each oSubFolder In oFolder.SubFolders
UnProtectDocFilesUnderFolder oSubFolder
For Each oFile In oSubFolder.Files
If InStr(oFile.Name, "doc") <> 0 Then
Set oDoc = Documents.Open(FileName:=oFile.Path, Visible:=False, PasswordDocument:=strPassword)
With oDoc
.ReadOnlyRecommended = False '請勿省略
.Password = ""
.Close True '關(guān)閉文檔
End With
End If
Dim t
t = DateAdd("s", 0.5, Now)
Do Until Now > t
DoEvents
Loop
Next
Next
End Sub