PR

【Excel VBA】毎回のパスワード入力、もう不要!パスワード付きExcelを自動で開く方法

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

業務で使う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ファイル」

image_vba_autoopen_write_No1

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

image_vba_autoopen_write_No2

読み取りパスワード付き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ファイル」

image_vba_autoopen_read_No1

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

image_vba_autoopen_read_No2

複数ファイルをまとめて開くには?(応用テク)

日々使うファイルが複数あるなら、ループ処理でまとめて開くのがおすすめです。
以下は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ファイル」

image_vba_autoopen_multiple_No1

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

image_vba_autoopen_multiple_No2

セキュリティ面での注意点

今回はパスワード付きExcelを開く方法を紹介しましたが、この方法はVBAの中にパスワードを記述することになるため、以下の点にご注意ください。

・コードにパスワードを平文で書くことになるため、他人と共有しない
・VBAプロジェクト自体にパスワード保護を書けることである程度の安全性は確保可能
・社内ルールやセキュリティポリシーに従うことが大前提

元々「共有したいけど編集されたくない」や「中身を見られたくない」からパスワードをかけているはずなので、十分注意の上、ご活用ください。

まとめ:手間を自動化して、作業時間をグッと短縮!

パスワード付きのExcelファイルも、VBAを使えば数行のコードで自動オープンが可能です。

特に毎日使う複数ファイルがある場合、業務効率は段違い!
面倒なパス入力を卒業して、もっとスマートにExcelを使いこなしましょう。

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

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

コメント

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