Excel VBA(事例編)

【事例で学ぶExcel VBA #9】ランダムに英文字のパスワードを生成する

Excel VBA(事例編)

本コーナーでは、私が普段実務で手作業の自動化ツールを作成する中で実装している

処理の一部をピックアップし、掲載用にカスタマイズしたものをご紹介していきます。

全て私の実務ベースで使っているものなので、使いこなすことが出来れば、必ずや

手作業の自動化に一役買ってくれる内容ばかりと勝手に自負しています。

「本だけじゃなくてExcel VBAを実践的に勉強してみたい!」

「ハードル高くて苦手だったけどもう一度VBAを勉強してみたい!」

「実務で役に立つVBAを学びたい!」

そんな方々の学習意欲向上の一助になれば大変嬉しく思います。

おススメ書籍

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

ExcelVBAを実務で使い倒す技術 [ 高橋宣成 ]
価格:1,980円(税込、送料無料) (2024/11/9時点)

楽天で購入

 

本シリーズは久方ぶりの更新となりました。先日少し暇な時間ができたので

ちょっとしたマクロを作ってみました。需要があるか微妙ですが、せっかく

作ったのでご紹介します😎

#9:ランダムにパスワードを生成する

VBAコード ※パソコンでの閲覧推奨
Option Explicit
'===================================================
'ツール名:英文字パスワードランダム生成
'作成日:2024/02/24
'処理概要:英文字パスワードランダム生成
'付属機能:なし
'作成者:まえきん
'===================================================
'===================================================
'関数名 :メイン関数(英文字パスワードランダム生成)
'処理内容:8文字の英文字パスワードをランダムに生成する
'トリガー:Excelのマクロ実行ボタン押下時
'引数  :なし
'戻り値 :なし
'===================================================
Sub GenerateRandomPassword()
 Dim passwordLength As Integer 'パスワード文字数を格納する変数
 Dim password As String '生成したパスワードを格納する変数
 Dim i As Integer 'ループカウンタ変数

 passwordLength = 8 'パスワードの長さを指定(今回は8文字)

 '英文字パスワードをランダム生成
 For i = 1 To passwordLength
  password = password & Chr(Int((90 - 65 + 1) * Rnd + 65))
 Next i

 '生成した英文字パスワードA1セルに出力
 Range("A1").Value = password
End Sub
VBAコード解説

「passwordLength = 8」

「For i = 1 To passwordLength ・・・ Next i」

ループカウンタ変数iを1からpasswordLength(今回は8)までの範囲でループさせます。

「password = password & Chr(Int((90 – 65 + 1) * Rnd + 65))」(※1)

ランダムな英文字を変数passwordに追加するための処理です。Rnd関数は0から1の

間の乱数を生成します。「Int((90 – 65 + 1) * Rnd + 65)」は、ASCIIコード65から

90までの範囲(アルファベットA~Z)でランダムな整数を生成する式です。これにより

大文字アルファベットがランダムに選択されます。Chr関数は指定されたASCIIコードに

対応する文字を返します。この処理を経てランダムに選択された大文字アルファベットが

変数passwordに格納されるということを示しています。

Range(“A1”).Value = password

生成されたパスワードをExcelのセルA1に出力します。

(※1)もう少し掘り下げてほしい方向けに+α解説

Rnd関数は0から1までの間でランダムな数値を生成します。(90 – 65 + 1)の部分は、

生成するランダムな文字の範囲を決定しています。ここでは、アルファベットの大文字の

ASCIIコードの範囲を考慮しています。大文字のAはASCIIコードで65、Zは90です。

したがって、この式はランダムに選択する文字の数を示しているというわけです。

「Int((90 – 65 + 1) * Rnd + 65)」はランダムな選択文字のASCIIコードの計算を

示しています。Rndが返す0以上1未満の数値を、90 – 65 + 1で得られた範囲の数で

乗じて、ランダムな数値を求めます。これによりアルファベットの大文字の範囲内での

ランダム数値を取得。さらに+ 65を加えることで、ランダムな数値がアルファベットの

大文字のASCIIコードの範囲内になるように調整されます。Chr関数は、指定されたASCII

コードに対応する文字を返します。この場合、ランダムに選択されたASCIIコードが

大文字のアルファベットに対応する文字に変換されることになります。

最後に「password = password & Chr(Int((90 – 65 + 1) * Rnd + 65))」の部分は、

生成されたランダムな文字を既存のpasswordに追加しています。これによりループを

通じて新しい文字が結合され、最終的にランダムな英文字のパスワードになります。

 

今回は英文字で8文字という制約の中で簡易的なマクロを作りましたが、カスタマイズ

次第で英数字込みやもっと長い文字数のパスワード生成などももちろん可能になります。

色々ためしてみるのもExcel VBAの勉強になりますし、面白いですよ😊

パスワードを考えるのが面倒な時は、意外と役に立つかも?(* ̄▽ ̄)フフフッ♪

最後まで読んで頂きありがとうございました!ではまた!

👆よろしければ、「いいね」よろしくお願い致します!
ブログ運営のモチベ上がります😄

ブログランキング・にほんブログ村へ
👆ブログランキングに参加しました!
よろしければ、応援よろしくお願い致します!
スポンサーリンク
\シェアする/

コメント