エクセルVBAのパスワード解除は3種類!ケース別解説
初心者エクセルVBAでパスワードって解除できるの?



パスワードの種類によって解除法が変わるよ!
一つずつ見ていこう!
エクセルには設定できるパスワードがいくつかありますが、この記事では、VBAでよくあるパスワード解除について、種類ごとに解説します。
VBAでよくあるパスワード解除は、大きく分けて3種類あります。
手順やコードが異なりますので、まずは「どのパスワードを解除するのか?」をハッキリさせましょう。
- シート・ブック保護の場合は
Unprotectを使って解除 - ファイルを開くパスワードの場合は
Password = ""にして保存し直す - VBAコードの場合は「VBAProjectのプロパティ」→「保護」タブから解除
実務でよくある「複数シートの保護を一度に解除する」「フォルダ内のパスワード付きファイルを連続で開く」も、VBAなら安全かつ簡単に行えます。
コピペできるコードを掲載したので、ぜひ活用してください。
知っておくと便利なエクセルVBAの便利ワザについて、以下の記事で解説しています。
エクセルVBAのパスワード解除法は種類によって変わる
エクセルVBAでよく扱うパスワード解除は、大きく分けて3種類あります。
「パスワードが合ってるはずなのに解除できない」という場合、解除する場所が異なっているかもしれません。
まずは、パスワードの種類ごとの解除方法を整理しましょう。
| 種類 | 守る対象 | 解除法 | パスワードを忘れた場合 |
|---|---|---|---|
| シート・ブック保護 | シート構成や編集 | VBAコードで外せる | バックアップからの復旧 |
| ファイルを開く | ファイル全体 | VBAコードで外せる | 解除不可 |
| VBAプロジェクト | マクロのコード | 設定画面で手動解除 | 正規には困難 |
シートやブックの保護、ファイルを開くときのパスワードは見慣れている方が多いと思いますが、VBAプロジェクトのパスワード解除は馴染みが薄いかもしれません。
マクロのコード改変を防ぐ目的で、VBAプロジェクトにパスワードを設定することができます。
また、シート・ブック保護やファイルを開くためのパスワードは、手動で解除できますが、繰り返し処理を行う場合はVBAを活用したほうが効率化につながります。
種類ごとの具体的な解除法は、各章をご覧ください。
シート・ブック保護のパスワードを解除する方法
シートやブック保護のパスワードをVBAでまとめて解除すれば、業務の効率化につながります。
例えば、本社が各支店にエクセルの報告書を配布している場合は、誤入力防止のため、すべてのシートにパスワードを設定して保護をかけることが多いはずです。
その計算式を修正・更新する場合に、ひとつずつ手作業でパスワードを入力して保護を解除するのは面倒です。
パスワード解除から計算式の修正、最後に再びシートの保護をかけるところまでまとめてVBAで行い、効率化を目指しましょう。
パスワードが分かる場合はエクセルのマクロで解除できる
VBAでシートやブックの保護のパスワードを解除するには、Unprotectというコードを使います。
まずは基本のコードをご紹介します。
Public Sub シート保護を外す()
ActiveSheet.Unprotect Password:="ここにパスワード"
End Subこれは、今、画面に開いているシートの保護を外すコードです。
「ここにパスワード」に、実際に設定しているパスワードを入力してください。
また、すべてのシートに同じパスワードがかかっている場合、For Eachの繰り返し処理でまとめて解除できます。
作例として、シート保護の解除・計算式の修正・再保護までをマクロで一度に行う手順をご紹介します。


上記のB10セルは、本来合計を求める数式が入るはずが、平均を出しています。
シートの保護を解除して、B10セルの数式を修正しましょう。


Alt+F11でVBEを開くことができます。
キーボードの場所は以下の図を参考にしてください。




- 「挿入」ボタンを押す
- 「標準モジュール」をクリック


以下のコードをそのままコピー&ペーストします。
Public Sub 保護解除から修正、再保護まで一括実行()
Dim ws As Worksheet
Dim 支店 As Variant
Const PW As String = "ここにパスワード" ' 設定済みのパスワード
' ① すべてのシートの保護を外す
For Each ws In ActiveWorkbook.Worksheets
ws.Unprotect Password:=PW
Next ws
' ② 各支店シートの計算式をまとめて修正・更新(例:B10に合計を入れる)
For Each 支店 In Array("北海道支店", "東京営業部", "名古屋支店", "大阪支店", "福岡支店")
Worksheets(支店).Range("B10").Formula = "=SUM(B2:B9)"
Next 支店
' ③ 再びすべてのシートに保護をかける
For Each ws In ActiveWorkbook.Worksheets
ws.Protect Password:=PW
Next ws
ActiveWorkbook.Save
End Sub貼り付けが終わったら、上から4行目の「ここにパスワード」を実際のものに変更しましょう。
また、シート名や修正する内容も実際のものに変更してください。


「実行」ボタンを押して、数式が修正されることを確認しましょう。


「B10」セルの数式が変更されたことを確認しましょう。
また、上記のサンプルコードでは、同じパスワードで再びシート保護をしたので、保護が設定されているかどうかも併せて確認してください。
ブックの保護のパスワード解除をする場合も、シート解除と同じUnprotectを使います。
Public Sub ブックの保護を外す()
ActiveWorkbook.Unprotect Password:="ここにパスワード"
End Subブックの保護を使う場面はあまり多くないので、「解除法はシート保護と同じ」程度に覚えておきましょう。
パスワードを忘れた場合のエクセルでの対処法
シートやブックの保護に設定したパスワードを忘れてしまった場合、現実的に試すべきなのは「元に戻せる手掛かりを探す」ということです。
以下を手掛かりに、保護前のファイルを探してみましょう。
| 自動保存やバックアップ | パスワード保護を設定する前のファイルがバックアップとして残っていないか確認しましょう。 |
|---|---|
| OneDriveのバージョン履歴 | ファイルをOneDriveに置いている場合、ファイルを右クリック→「バージョン履歴」から、保護を設定する前の版に戻せる可能性があります。 |
| ファイルの配布元を確認 | 配布元が別にある場合、そこに保護前の原本が残っていたり、パスワードの再交付を受け付けていたりすることがあります。 |
この記事では、パスワードを無理やり突破する方法は扱いません。
トラブルやデータ破損の元になること、他の方が作ったファイルを力ずくで解除することは不正アクセスになりかねないからです。
無理に自己流で解除するのではなく、専門業者への相談を検討しましょう。
エクセルファイルを開くパスワードを解除する方法
ファイルを開くためのパスワードは、前章の「シート・ブック保護」とは性質が異なり、ファイルそのものを暗号化してロックするものです。
そのため、開くときに正しいパスワードを入力しないと、ファイルの中身を一切見ることができません。
この章では、VBAでファイルを開くパスワードを解除する方法を解説します。
パスワードが分かる場合にVBAで解除する方法
ファイルを開くパスワードは、いったん正しいパスワードで開いてしまえば、設定を空にして保存し直すことで解除することができます。
VBAなら複数ファイルのパスワードを一度に解除することができます。
一つのフォルダ内にあるエクセルファイルについて、パスワードを一度に解除するサンプルコードは以下のとおりです。



このコードは、すべてのファイルのパスワードが同じ場合に使えるよ!
Public Sub フォルダ内の開くパスワードをまとめて外す()
Dim フォルダ As String
Dim ファイル名 As String
Dim wb As Workbook
Const PW As String = "現在のパスワード"
フォルダ = "C:\Users\ユーザー名\Desktop\支店報告書\"
' フォルダ内の最初のエクセルファイルを取得
ファイル名 = Dir(フォルダ & "*.xlsx")
' ファイルがなくなるまで繰り返す
Do While ファイル名 <> ""
Set wb = Workbooks.Open(Filename:=フォルダ & ファイル名, Password:=PW)
wb.Password = "" ' 開くパスワードを削除
wb.Save
wb.Close
ファイル名 = Dir() ' 次のファイルへ進む
Loop
MsgBox "すべてのファイルの処理が終わりました。"
End Sub「現在のパスワード」に該当するパスワードを入力しましょう。
また、フォルダは実際に使用するフォルダのパスに変更してください。
パスワードはすべて同じであること、作業用ファイルを作成して、そこでマクロを実行する必要があることに注意が必要です。
また、書き込みパスワードも併せて解除したい場合は、wb.Password = ""の後にwb.WritePassword = ""を追加しましょう。
パスワードを忘れた場合は暗号化のため解除できない
シート保護やブック保護と同様、パスワードを忘れてしまった場合、正規の方法では解除できません。
ファイル全体が強力な暗号化で守られているため、正しいパスワードなしに中身を取り出すことは、原理的にできない仕組みになっているからです。



ファイルを開くパスワードは「忘れたら元に戻せないほど安全」とも言えるよ!
復元方法としては、前章と同様、OneDriveのバージョン履歴を活用したり、配布元がある場合はそちらに相談して、パスワードを設定する前のファイルを探すことに尽きます。
パスワード付きで保管する大切なファイルは、別途パスワードを控えておく・暗号化前のバックアップを別の場所に保存しておくことを強くお勧めします。
VBAプロジェクトのパスワードを解除する方法
VBAプロジェクトのパスワードは、これまでの2つとは性質が異なります。
VBAプロジェクトのパスワードはマクロのコードそのものを見られないようにするためのものであり、これはVBAで解除できないため、手動で解除します。


パスワードを忘れてしまうと、エクセルの標準機能では解除できませんので注意しましょう。
パスワードが分かる場合は設定画面で解除する
VBAプロジェクトのパスワードは、Unprotectのようなコードでは外せません。
VBEエディタの設定画面から手動で解除します。


- 「VBAProject」を右クリック
- 「VBAProjectのプロパティ」を選択


- 「保護」タブを押す
- 「プロジェクトのロック」のチェックを外す
- パスワードを削除する
- 「OK」ボタンを押す



この画像では画面をイメージしやすいようにチェックとパスワードが残っているよ!
解除するときはチェックを外して、パスワードを削除してね!


パスワードの削除が終わったら、マクロファイルの保存をしましょう。
一度ファイルを閉じて開き直すと、パスワードの要求がなくなります。
パスワードを削除しただけではすぐに反映されないため注意しましょう。
また、VBAプロジェクトのパスワードはモジュールごとではなく、プロジェクト全体に1つです。
一部のマクロのみを保護することはできないため、VBAプロジェクトのパスワードを解除する際は他のマクロも公開されてしまうことに注意が必要です。
パスワードを忘れた場合はエクセルでは限界がある
VBAプロジェクトのパスワードを忘れてしまった場合、エクセルの標準機能では解除できません。
プロパティ画面自体が、正しいパスワードを入力しなければ開けないからです。
VBAコードで強制的に解除しようとすると、ファイルが壊れてマクロごと使えなくなるリスクがあるためお勧めしません。
インターネット上で配布されている無償ツールも同様です。
パスワードが見つからない場合は、無理に自分で解決しようとせずに、パスワード解除を専門に扱う業者に相談するのが安全です。
大切なファイルを預けることになるため、秘密保持や個人情報保護に関する対応をよく確認してから依頼しましょう。
また、依頼の際は、忘れずにバックアップを取ってください。
このように、VBAプロジェクトのパスワードは忘れると戻しにくいため、設定する際は、パスワードを別の場所に必ず控えておきましょう。
エクセルVBAのパスワード解除に関するQ&A
エクセルVBAのパスワード解除は種類の見極めが第一歩!
エクセルVBAのパスワード解除は主に「シート・ブック保護」「ファイルを開くパスワード」「VBAプロジェクト」の3種類があり、それぞれ解除方法が異なります。
まずは自分のパスワードがどの種類かを見極め、正しい方法で解除することです。
忘れてしまったパスワードを無理にこじ開けようとすると、ファイルの破損や情報漏洩につながるので注意しましょう。
それではおさらいです。
- シート・ブック保護の場合は
Unprotectを使って解除 - ファイルを開くパスワードの場合は
Password = ""にして保存し直す - VBAコードの場合は「VBAProjectのプロパティ」→「保護」タブから解除
パスワードを忘れてしまった場合は解除が困難となりますので、あらかじめパスワードを控えておく、保護を設定する前のバックアップを取っておくなどの対応を必ず行いましょう。
今回ご紹介したパスワード解除のほか、エクセルVBAの便利ワザは以下の記事でご紹介しています。