パスワード付き Excel ブックのパスワード入力を省く VBA 作った
とあるパスワード付き Excel ブックがあって、それを開く時に毎度パスワードを入力するのが面倒になった。しかしやんごとなき理由でパスワードを外すことはできない。
そこで、パスワード入力を自動化する VBA マクロを作ってみた。以下の GitHub リポジトリに置いた。
新たな Excel ブックを作って、ThisWorkbook
内に以下のような VBA マクロコードを書いてやる。このマクロ付き Excel ブックを開けば、パスワード付きの Excel ブックだけが開かれる挙動になる。
Private Sub Workbook_Open()
On Error Resume Next
Workbooks.Open Filename:="C:\PATH\TO\FILE.xlsx", Password:="PASSWORD-HERE!"
If Err.Number <> 0 Then
MsgBox "Failed To Open The Book"
End If
ThisWorkbook.Close
End Sub
Workbooks.Open()
関数に Password
という引数が渡せるので、ココで開きたいファイルのフルパスとパスワードをベタ書きしているだけ。つまりこのマクロを書いたブックが漏洩したらパスワードも漏洩する。
Workbook_Open()
関数はそのワークブックを開いた時に自動的に実行される関数。その関数内で別の Excel ファイルを開き、自身は ThisWorkbook.Close
で閉じてしまっているので、見た目上はパスワード付きブックだけが開かれるような挙動になるというワケ。
このマクロ付きブックを編集したくなった時は、予め Visual Basic を開いて「実行」→「中断」を選択しておき、それからこのマクロ付きブックを開こうとすれば Workbook_Open()
関数の実行前に処理が止まるので編集が可能。
せっかくのパスワード付きブックに対して、とてもセキュアではない方法で扱っているので、くれぐれもご注意を。