之前因为老板要求,本来我手上的 Office 文件都是明码储存,
后来被要求要加密码处理。
于是为了赶快把我手上几千份文档加密,我使用了以下的方式:
Public Sub SetDOCPassword (src_file,oldpassword,newpassword)
dim oWord
dim myDOC
set oWord = CreateObject("Word.Application")
oWord.Visible = FALSE
On Error Resume Next
set myDOC = Nothing
set myDOC =oWord.Documents.Open(src_file,FALSE,FALSE,FALSE,oldpassword)
if Not myDOC is Nothing then
oWord.DisplayAlerts = FALSE
if newpassword = "" then
myDoc.EncryptionProvider = ""
myDOC.SaveAs2 src_file,,FALSE,"",FALSE,""
else
myDOC.Password = newpassword
myDOC.Save
end if
myDOC.Close
end if
oWord.Quit
End Sub
之前一年多,不论是 .docx 或者 office 97 的 .doc 都相安无事,
使用程式加密的文件,该用 word2016 或者 word2003 开启都可以
输入密码正常作业。
但是不知道经过几个更新 之后,上个月有次重新加密的结果,
使用 word2003 开启时输入密码后会出现
https://i.imgur.com/OBU8lCh.png
然后使用 word2016 开启就相安无事。
看起来 VBSCRIPT 执行时会使用 office 2016 作为背景执行的本体。
问题:
1. 我有没有办法让 VBSCRIPT 选择使用的 office ?
2. 这是出了什么问题会让 office2016 加密的 office2003 档案在
office 2003 打不开?
自己回:
office 2016 应该是被更新到使用新的 password 编码方式,
因此就算是旧的 word 档使用旧编码,只要更新过就只能用新的编码加密,
同时也别想用旧的 office 2003 开启。
(PS: e04)
解决方法只能写 BATCH 在使用 office 2003 开档案前先解密编完再加密。
(PS: e04)