PR

【Excel自動化】毎回のパスワード入力を省略!VBAで特定ファイルを自動オープンする方法

Excel
記事内に広告が含まれています。

業務で使う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を使いこなしましょう。

この記事が役に立ったと思った場合、ブックマークやシェアしてもらえると嬉しいです。
また、質問やこんな方法を紹介してほしい!などありましたら、お気軽にコメントしてください。

最後まで読んでいただき、ありがとうございました!

ろじゃー

仕事・子育てに奮闘中の社会人です。
仕事でも日常生活でも、ちょっとでも便利になることが紹介できるブログを書いています!
 
仕事柄、PC操作やエクセル、VBAなどは得意です!
Excel歴は10年以上の事務職。
関数やVBAを活用して、資料作成やデータ分析をはじめとした様々な業務の効率化・自動化に取り組んできました。
 
このブログでは、実際の業務で使える効率化テクニックを発信しています。
「わからない」や「困った」など問題を抱える方や、もっと効率化したいと思っている方に、少しでも役立てれば幸いです!

ご質問・ご相談など、お気軽にご連絡ください。

ろじゃーをフォローする
ご質問・ご相談はこちらへ!
 ろじゃー|日々、ちょっとずつ良くなることを目指すブロガー
Excel歴10年以上。VBAや関数、業務効率化などを発信中。
📩 お問い合わせはこちら
Excel
シェアする
ろじゃーをフォローする

コメント

タイトルとURLをコピーしました