VBScript で Excel や Word のパスワードを変更する

VBScript で Excel や Word をオートメーション操作し、パスワードを変更します。
もちろん、元のパスワードは正しくわかっていることが前提で、パスワードのわからないファイルを開くためのものではありませんよ。

例えば何かの担当者になって、大量の Word ファイルや Excel ファイルのパスワードを変更しないといけなくなった場合に楽することを想定しています。

ドラッグ&ドロップのファイルへの対応とか、フォルダ内をスキャンして次々と変更していく方法はまたの機会にして、まずパスワード書き換えの部分だけをば。

VBScript で Word のパスワードを変更する

ファイル名・パスワードを変更し、SetExcelPass.vbs などの .vbs 拡張子のファイル名で保存してください。

Dim WD, DOC, WDPath, OldPass, NewPass

WDPath = "C:testtest.docx"
OldPass = ""
NewPass = "qwertyuiop"

Set WD = CreateObject("Word.Application")
'WD.Visible = True
Set DOC = WD.Documents.Open(WDPath,,,,OldPass)
DOC.Password = NewPass
DOC.Saved = False
DOC.Save
DOC.Close
Set DOC = Nothing
WD.Quit
Set WD = Nothing

MsgBox "完了しました"

注意点ですが、DOC.Saved = False の部分は、Word は文章の方の変更を加えないと上書き保存できないので、この行で変更を加えたことにしてしまっています。

もう一つ、もしも途中でエラーが起こってしまった場合(ファイル名が違っていたりとか)、裏で Word が起動したままになっていることもあります。
エラーのあとスクリプトが動作しない場合は、タスクマネージャを開いて、Word を終了すると正常に戻ることが多いです。

VBScript で Excel のパスワードを変更する

Dim XLS, WB, XLPath, OldPass, NewPass

XLPath = "C:testtest.xlsx"
OldPass = ""
NewPass = "qwertyuiop"

Set XLS = CreateObject("Excel.Application")
'XLS.Visible = True
Set WB = XLS.Workbooks.Open(XLPath,,,,OldPass)
WB.Password = NewPass
WB.Saved = False
WB.Save
WB.Close
Set WB = Nothing
XLS.Quit
Set XLS = Nothing

MsgBox "完了しました"

WB.Saved = False の部分ですが、Word と違って Excel は変更を加えなくても保存できてしまう仕様になっています。
なので、この部分はなくても動作します。
ですが、将来的に Word に合わせて変更あった時のみ保存可というようになっても対応できるように入れたままにしています。

タイトルとURLをコピーしました