VBAで複数のファイルを作成しそのファイルにパスワードを設定する方法

みなさん、こんにちはケンケンです。

 

エクセルを通してパスワード管理する方法を紹介しています。

これまでの記事は以下になります。

エクセルでパスワード管理を徹底する方法【VBA・関数使用】

エクセル関数を使ってパスワード管理をする方法

RANDBETWEEN関数を使ってパスワードを作る方法【エクセル関数】

VBAで新規ファイルを作成しパスワードを設定する方法

 

今回は、前回VBAでパスワードを設定したものをカスタマイズして、複数のファイルにパスワードを設定する方法をご紹介します。

繰り返しのForNext構文が威力を発揮します。

 

前回の復習

前回作ったコードはこんな感じでした。

Sub save_pass()
    Workbooks.Add.SaveAs ThisWorkbook.Path & "\" & Format(Date, "yyyymmdd") & "_" & Range("A1").Value, Password:="pass"
    ActiveWorkbook.Close
End Sub
Sub save_pass2()
    Workbooks.Add.SaveAs ThisWorkbook.Path & "\" & Format(Date, "yyyymmdd") & "_" & Range("A1").Value, WriteResPassword:="pass"
    ActiveWorkbook.Close
End Sub

 

上記プロシージャを実行するとファイルが作成され、同時にパスワードも設定できました。

 

ただ、これだけだと手動でパスワード設定したほうが楽そうです。

VBAを使う醍醐味は大量の処理を自動化することですから、上記のコードを改良して複数同時にパスワードを設定できるようにしましょう。

 

ForNext構文でパスワードを設定する方法

それではパスワードを複数同時に設定してみましょう。

使うのはForNext構文です。

ForNext構文について詳しく知りたい方はこちらの記事をご覧ください。

 

コードを書く前に、以下のようにこれから作るファイルとパスワードの一覧を作ります。

A列に作りたいファイル名をB列にパスワードの一覧になります。

 

この通りにファイルとパスワードを設定します。

それでは、コードを書いていきます。

Sub save_pass3()
    Dim fileCnt 'カウント変数
    Dim Lrow
    
    Application.ScreenUpdating = False '①
    Lrow = Range("A" & Rows.Count).End(xlUp).Row 'A列最終行を変数Lrowに格納
    For fileCnt = 2 To Lrow '②
        Workbooks.Add.SaveAs ThisWorkbook.Path & "\" & Format(Date, "yyyymmdd") & "_" & Range("A" & fileCnt).Value, Password:=Range("B" & fileCnt).Value
        ActiveWorkbook.Close
    Next
    Application.ScreenUpdating = True '①
End Sub

 

①Application.ScreenUpdating = Falseで画面更新を止めることができます。

ファイルを作ったり閉じたりすると画面更新が起こるので、それを止めてしまいます。

逆にTrueで設定を戻せます。

 

②ForNextを使った繰り返し構文でA列のファイル名とB列のパスワードを設定します。

前回書いたコードとどこが違うか確認してください。繰り返し構文を使う際は、変数の使い方が肝です。

理解するまで思考を止めないようにしましょう。

 

それでは、コードを実行してみましょう。

以下のようにファイルが作られており、かつファイルを開くとパスワード画面になり、指定したパスワードで開ければ成功です。

 

まとめ

どうですか。

だいぶ形になってきました。

しかし、いまのままではパスワードのセキュリティが甘いですね。

そこで、次回VBAで関数を使って乱数を発生させ、パスワードを生成する方法をご紹介します。

 

お楽しみに。それではまた次回お会いしましょう。

 

【記事一覧】エクセルでパスワード管理を徹底する方法

エクセルでパスワード管理を徹底する方法【VBA・関数使用】

エクセル関数を使ってパスワード管理をする方法

RANDBETWEEN関数を使ってパスワードを作る方法【エクセル関数】

VBAで新規ファイルを作成しパスワードを設定する方法

VBAで複数のファイルを作成しそのファイルにパスワードを設定する方法

エクセルVBAでRANDBETWEEN関数を使って8桁のパスワードを複数設定する方法

エクセルVBAでファイル作成とパスワード設定を同時に行う方法