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

毎回編集するたびにパスワード打つの面倒くさいな~
とか、

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

あ~~!!もう面倒くさい~~!!!
と心の中で叫んでたりします。(笑)
本記事では、そんな悩みを解決してくれる
パスワード入力なしで自動的にExcelファイルを開く方法✨
を紹介します。
毎日のルーティン作業だからこそ、少しでも手間を減らせるところは見直していきたいですよね。
■この記事で分かること
・パスワード付きのExcelをVBAで開く基本構文
・「読み取りパスワード」と「書き込みパスワード」の違い
・複数ファイルを一括で開く応用テクニック
・セキュリティ面での注意点
【前提】パスワードには、「書き込み」と「読み取り」の2種類がある
この記事を読んでいる方には不要の説明かと思いますが、、、
Excelでかけることのできるパスワードは、「書き込み」用と「読み取り」用の2種類があります。
パスワードの種類 | 説明(パスワードが分からない場合) |
---|---|
書き込みパスワード | パスワードを知らないと、Excelの編集ができない |
読み取りパスワード | パスワードを知らないと、Excelを開くことができない |
つまり、
・Excelを共有したいけど、自分以外が編集できると困る → 書き込みパスワード
・パスワードを知っている人にしか、Excelを見られてたくない → 読み取りパスワード
という使い分けができます。
ではなぜこの説明をあえてしたかというと、
VBAに記述するとき、「書き込み」と「読み取り」で記述方法が異なるから
です。
では実際に、どのように記述したらよいか説明していきます。
書き込みパスワード付きExcelを開くには?
書き込みパスワードを設定しているExcelを開く場合、以下の記述で開くことができます。
Workbooks.Open Filename:=”ファイルのフルパス”, WriteResPassword:=”書き込み用パスワード”
※注意※
「ファイルのフルパス」、「パスワード」はそれぞれ、始まりと終わりを「”」(ダブルクォーテーション)で囲ってください。
実際に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
ちなみにVBAのコード設定・実行方法は、以下記事にて紹介しています。
こちらもぜひご参照ください。
※参照を一括で切り替えるVBAコード一覧>絶対参照に変更するVBAコード部分に記載
実際にこのVBAを使って、Excelを開いてみましょう。
以下のように、開きたいExcelとVBAを記述したファイルを用意しました。
・開きたいファイル:「書き込みパスワードを設定したExcel_1」
・ファイルを開くVBAを記述しているファイル:「パスワードExcelを開く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ファイル」

こちらを実行すると、ちゃんとファイルを開くことができました!

複数ファイルをまとめて開くには?(応用テク)
日々使うファイルが複数あるなら、ループ処理でまとめて開くのがおすすめです。
以下は2つの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ファイルを開きたいと思います。
・開きたいファイル:「書き込みパスワードを設定したExcel_1」、「書き込みパスワードを設定したExcel_1」の2ファイル
・ファイルを開くVBAを記述しているファイル:「パスワードExcelを開くVBAファイル」

こちらを実行すると、ちゃんと2ファイルとも開くことができました!

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