パスワード付き 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() 関数の実行前に処理が止まるので編集が可能。
せっかくのパスワード付きブックに対して、とてもセキュアではない方法で扱っているので、くれぐれもご注意を。