みなさん、こんにちはケンケンです。
エクセルを通してパスワード管理する方法を紹介しています。
これまでの記事は以下になります。
RANDBETWEEN関数を使ってパスワードを作る方法【エクセル関数】
今回は、前回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で関数を使って乱数を発生させ、パスワードを生成する方法をご紹介します。
お楽しみに。それではまた次回お会いしましょう。
【記事一覧】エクセルでパスワード管理を徹底する方法
RANDBETWEEN関数を使ってパスワードを作る方法【エクセル関数】
VBAで複数のファイルを作成しそのファイルにパスワードを設定する方法
エクセルVBAでRANDBETWEEN関数を使って8桁のパスワードを複数設定する方法
エクセルVBAでファイル作成とパスワード設定を同時に行う方法