コメントありがとうございます。 残念ながら、もうSlingboxを使っていないた…
VBAで12文字のランダム文字列を生成する方法|英数字ランダムID作成
VBAでランダム文字列を作りたい
Excel VBAを書いていると、
・仮パスワード
・一時キー
・管理番号
・ランダムID
などを生成したい場面があります。
特に、
「英数字12文字」
のような固定長ランダム文字列はよく使います。
使う文字列を定義する
まずは利用する文字を定義します。
例えば。
chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
これで、
・大文字
・小文字
・数字
を利用できます。
Rnd関数でランダム取得
VBAでは、
Rnd
を使って乱数生成します。
例えば。
Mid(chars, Int(Rnd() * Len(chars)) + 1, 1)
で、1文字取得可能です。
12文字生成するサンプル
例えば。
Function RandomString()
Dim chars As String
Dim result As String
Dim i As Integer
chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
Randomize
For i = 1 To 12
result = result & Mid(chars, Int(Rnd() * Len(chars)) + 1, 1)
Next i
RandomString = result
End Function
実行結果例
例えば。
aZ81KpLmQx2R
のような文字列が生成されます。
Randomize を忘れない
Randomize
を入れないと、毎回同じ乱数系列になる場合があります。
特にVBAでは重要です。
数字だけにすることも可能
例えば数字だけなら。
chars = "0123456789"
に変更します。
記号を追加する場合
例えば。
chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%"
のように追加可能。
ただし、
・URL
・SQL
・CSV
で扱う場合は注意が必要です。
パスワード用途は注意
VBAの
Rnd
は、暗号学的に強い乱数ではありません。
そのため、
・重要認証
・高セキュリティ用途
には不向きです。
Excelシート関数化も可能
作成したFunctionは、
セルから
=RandomString()
のように利用できます。
まとめ
VBAで12文字ランダム文字列を生成するには、
Rnd
と、
Mid
を組み合わせます。
基本的には、
・利用文字列定義
・ランダム抽出
・12回繰り返し
で実装可能です。
仮IDや簡易キー生成などで便利に使えます。
検索

コメントを残す