「ユーザーごとに異なるパスワードを作りたい」
「安全なパスワードを一括で発行したい」
そんなときに便利なのが Excel VBAでのランダムパスワード生成マクロです。
この記事では、英数字+記号を含んだパスワードを自動生成する方法をご紹介します。
動作イメージはこちら
この記事はこんな方におすすめ
・Excelでパスワードを管理をしている
・社内ユーザーごとに異なるパスワードを発行したい
・強力なパスワードを簡単に作成したい
シートの確認
今回はこのようなシートを使います。A列に名前が入力されていて、B列にパスワードが生成されます。

B列にパスワードを自動生成していきます。
VBAコード
ランダム(大文字を含む英数字+記号)パスワード生成するコード
Sub randomPass()
Dim i As Long, j As Long
Dim passLength As Long
Dim charaType As String
Dim password As String
Dim lastRow As Long
' 使用する文字(英大文字・英小文字・数字・記号)
charaType = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%&*"
passLength = 12 ' パスワードの長さを指定
With ActiveSheet
' A列の最終行を取得
lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
' A列の人数分、B列にパスワードを出力
For i = 2 To lastRow
password = ""
For j = 1 To passLength
password = password & Mid(charaType, Int(Rnd() * Len(charaType) + 1), 1)
Next j
.Cells(i, 2).Value = password
Next i
End With
MsgBox "パスワードを生成しました!", vbInformation
End Sub
コードのポイント解説
コード部分 | 説明 |
---|---|
charaType = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%&*" | 使用する文字セット(英数字+記号) |
passLength = 12 | パスワードの長さを12文字に指定 |
Rnd() | 乱数を発生させて文字をランダムに選択 |
Mid(charaType, Int(Rnd() * Len(charaType) + 1), 1) | ランダムに選ばれた位置の文字を取り出す |
.Cells(i, 2).Value = password | B列に生成したパスワードを出力 |
マクロ実行
さきほど入力したコードを実行すると、B列にランダムなパスワードが生成されます。

コメント