業務で使うExcelですが、セキュリティの都合上パスワード付きにしている方も多いですよね。
でも正直、

毎回編集するたびにパスワード打つの面倒くさいな~
自動で開けたらいいのに。。。
とか、

あ、パスワード打ち間違えた!(泣
またファイル開かないといけない。。。
など思ったことはありませんか。
私も資料の作成・更新をするのですが、
・他の人と進捗状況を共有したい
・ただ自分以外の人には編集してほしくない(数式とか壊されたりすると大変だったりするので)
ということで、編集ができないようにパスワードを書けることがよくあります。
ただ毎日作業・更新するファイルが多いので、Excelが2,3,4個…など増えてくると、、、

あ~~!!もう面倒くさい~~!!!
と心の中で叫んでたりします。(笑)
本記事では、そんな悩みを解決してくれる
パスワード入力なしで自動的にExcelファイルを開く方法
を紹介します。
この方法を使えば、作業効率が大幅にアップすること間違いなし!
コード付きで分かりやすく紹介していきますので、最後まで読んでいただけると嬉しいです。
★最終的には、以下のようにPW付ファイルを自動で開くことができるようになります。
- 「読み取りパスワード」と「書き込みパスワード」の違い
- パスワード付きのExcelをVBAで開く方法
- 複数ファイルを一括で開く応用テクニック
- セキュリティ面での注意点
前提条件・注意点
初めに、本記事の内容を活用されるにあたり、以下注意点はご理解をお願いいたします。
セキュリティについて
※前提条件・注意点※
紹介するVBAは、パスワード付きのブックを開く便利な方法ですが、
・パスワードが分かっている前提であること
・VBAにパスワードを記載するため、セキュリティ上のリスク(第三者にも開かれてしまう可能性)があること
は十分ご認識のうえ、参照されてください。
職場などで使用する場合、社内ルールやセキュリティポリシーに従って活用されてください。
ファイルを開くパターンと特徴一覧
VBAコードを紹介する前に、ファイルを開く他の方法との比較をしておきましょう。
方法 | 特徴 | 向いている状況 |
---|---|---|
手入力で毎回入力 | セキュリティが高い | 不特定多数と共有 |
VBAで自動入力 | 効率重視、時短 | 社内運用、自分だけで使うExcel |
パスワードなしで保存 | リスクは高いが操作は楽 | セキュリティ不要な資料共有時 |
VBAを使えば、毎回の操作が不要になるので、社内用ファイルや定型業務には特におすすめです。
状況に応じて活用していきましょう。
パスワードには、「書き込み」と「読み取り」の2種類がある
Excelではパスワードを設定することができますが、実は「書き込み」用と「読み取り」用の2種類があります。
「書き込み」用と「読み取り」用の違いは以下のとおりです。
パスワードの種類 | 説明(パスワードが分からない場合) |
---|---|
書き込みパスワード | パスワードを知らないと、Excelの編集ができない |
読み取りパスワード | パスワードを知らないと、Excelを開くことができない |
つまり、
・Excelを共有したいけど、自分以外が編集できると困る → 書き込みパスワード
・パスワードを知っている人にしか、Excelを見られたくない → 読み取りパスワード
という使い分けができます。
ではなぜこの説明をしたかというと、
VBAに記述するとき、「書き込み」と「読み取り」で記述方法が異なるから
です。
では実際に、どのように記述したらよいか説明していきます。
書き込みパスワード付きExcelを開くには?
書き込みパスワードを設定しているExcelを開く場合、以下のVBAコードで開くことができます。
Workbooks.Open Filename:="ファイルのフルパス", WriteResPassword:="書き込み用パスワード"
このコードは、指定したブックに書き込み用パスワードを自動入力して開くものです。
・”ファイルのフルパス” → 実際に開きたいファイルのパス
(入力例:”C:\Users\Documents\○○.xlsx”)
・”書き込み用パスワード” → 実際のパスワード
にそれぞれ書き換える必要があります。
- 「ファイルのフルパス」・「パスワード」は、それぞれの始まりと終わりを「”」(ダブルクォーテーション)で囲みます。
実際に書き込み用ファイルを開くExcel VBAのサンプルを用意しました。
こちらを標準モジュールにコピペします。
Sub PWWrite_Book_Open()
On Error Resume Next
'「ファイルのフルパス」、「書き込み用パスワード」は書き換えてください。
Workbooks.Open _
Filename:="ファイルのフルパス", _
WriteResPassword:="書き込み用パスワード"
If Err.Number = 0 Then
MsgBox "Excelを開けました。編集可能です。",vbInformation
Else
MsgBox "Excelを開けませんでした。パスワードを確認してください。",vbExclamation
End If
On Error GoTo 0
End Sub
ちなみにExcel VBAのコード設定方法は、
・「Alt」+「F11」キーでエディターを開く
・「挿入」タブより、「標準モジュール」を選択
・標準モジュールに上記VBAコードをコピペ
この流れで作業していきます。
以下記事では、VBAコードの設定方法を画像付きで分かりやすく説明しています。
こちらの記事もぜひチェックしてみてください。
※参照を一括で切り替えるVBAコード一覧>絶対参照に変更するVBAコード部分に記載
実際にこのVBAを使って、Excelを開いてみましょう。
以下のように、開きたいExcelとVBAを記述したファイルを用意しました。
・開きたいファイル:「書き込みパスワードを設定したExcel_1」
・ファイルを開くVBAを記述しているファイル:「パスワードExcelを開くVBAファイル」

VBAコードのコピペが完了したら、今度は実際に動かしてみます。
以下手順でVBAを実行することができます。
・「開発」タブ→「マクロ」→実行するマクロを選択し、「実行」を選択

これで、選択したVBAを実行することができます。
実行結果は以下のとおり。ちゃんとファイルを開くことができています。

読み取りパスワード付きExcelをVBAで開くには?
読み取りパスワードを設定しているExcelを開く場合、以下の記述で開くことができます。
Workbooks.Open Filename:="ファイルのフルパス", Password:="読み取り用パスワード"
このコードは、指定したブックに読み取り用パスワードを自動入力して開くものです。
実際に読み取り用ファイルを開くExcel VBAのサンプルを用意しました。
先ほどと同じように、こちらを標準モジュールにコピペします。
Sub PWRead_Book_Open()
On Error Resume Next
'「ファイルのフルパス」、「読み取り用パスワード」は書き換えてください。
Workbooks.Open _
Filename:="ファイルのフルパス", _
Password:="読み取り用パスワード"
If Err.Number = 0 Then
MsgBox "Excelを開けました。",vbInformation
Else
MsgBox "Excelを開けませんでした。パスワードを確認してください。",vbExclamation
End If
On Error GoTo 0
End Sub
こちらも同じように、Excelを開いてみましょう。
以下のように、開きたいExcelとVBAを記述したファイルを用意しました。
・開きたいファイル:「読み取りパスワードを設定したExcel」
・ファイルを開くVBAを記述しているファイル:「パスワードExcelを開くVBAファイル」

実行結果は以下のとおり。
先ほどと同じ手順で実行すると、ちゃんとファイルを開くことができています。

複数ファイルをまとめて開くには?(応用テク)
冒頭の動画でご覧いただいたように、複数ファイルをまとめて開くことも可能です。
複数のファイルを開く場合、「For… Next」ステートメントを使うことで、複数のファイルに対応することができます。
以下はMicrosoftが「For…Next」ステートメントに関する説明の引用です。
For…Next ステートメント
参考:For…Next ステートメント – Microsoft Learn
ループ カウンターが最終的な値に近づく間に 、ステートメント のグループを繰り返します。
少し難しい内容ですが、要は「同じ処理を、決めた回数だけ自動で繰り返してね」ということです。
この「For…Next」ステートメントを使って、複数のPW付ファイルを開いていきます。
こちらがそれを実行するExcel VBAとなります。
Sub PWWrite_Book_Open_Multiple()
Dim fileList As Variant
Dim pwList As Variant
Dim i As Integer
fileList = Array("ファイルのフルパス1", "ファイルのフルパス2")
pwList = Array("パスワード1", "パスワード2")
For i = LBound(fileList) To UBound(fileList)
On Error Resume Next
Workbooks.Open Filename:=fileList(i), WriteResPassword:=pwList(i)
If Err.Number <> 0 Then
MsgBox "開けなかったファイル:" & fileList(i), vbExclamation
End If
On Error GoTo 0
Next i
End Sub
では最後に、複数のExcelを開いてみましょう。
今回は書き込みパスワードがかかった2ファイルを開きたいと思います。
・開きたいファイル:以下2ファイル
→「書き込みパスワードを設定したExcel_1」
→「書き込みパスワードを設定したExcel_2」
・ファイルを開くVBAを記述しているファイル:「パスワードExcelを開くVBAファイル」

実行結果は以下のとおり。
先ほどと同じ手順で実行すると、2ファイルともちゃんと開くことができています。

セキュリティ面での注意点
今回はパスワード付きExcelを開く方法を紹介しましたが、この方法はVBAの中にパスワードを記述することになるため、以下の点にご注意ください。
・コードにパスワードを平文で書くことになるため、他人と共有しない
・VBAプロジェクト自体にパスワード保護をかけることである程度の安全性は確保可能
・社内ルールやセキュリティポリシーに従うことが大前提
元々「共有したいけど編集されたくない」や「中身を見られたくない」からパスワードをかけているはずなので、十分注意の上、ご活用ください。
まとめ:手間を自動化して、作業時間をグッと短縮!
パスワード付きのExcelファイルも、VBAを使えば数行のコードで自動オープンが可能です。
特に毎日使う複数ファイルがある場合、業務効率は段違い!
面倒なパス入力を卒業して、もっとスマートにExcelを使いこなしましょう。
この記事が役に立ったと思った場合、ブックマークやシェアしてもらえると嬉しいです。
また、質問やこんな方法を紹介してほしい!などありましたら、お気軽にコメントしてください。
最後まで読んでいただき、ありがとうございました!
コメント