ワイズリマインダー

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や簡易キー生成などで便利に使えます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

検索

最近のコメント

最近の投稿

タグ

フィード配信

アーカイブ

外部リンク