VBAのIE(InternetExplorer)制御で役立つ指定した桁数で文字列をランダム自動生成する制御方法について解説しています。
前回の「指定した桁数でパスワードをランダム自動生成」ではパスワード用に自動生成しましたが、今回は文字列をランダム自動生成する方法について解説します。こちらもよくある「秘密の質問と答え」といった答え部分がわずらわしい場合に自動生成するプログラムです。
以下が今回の処理の流れになります。
Int関数は小数点以下を切り捨てて整数にする関数です。
※マイナス値の場合は、小さいほうに丸めます。(Int(-10.52) → -11
構文 | Int(Num) | ||||
---|---|---|---|---|---|
引数 | 省略 | 説明 | |||
Num | ● | 倍精度浮動小数点数型の数値または任意の数式。 |
Rnd関数は0以上1未満の乱数を発生させる関数です。戻り値は、単精度浮動小数点数型 (Single) の乱数を返します。また、引数Numberによって、どのような乱数を返すかを指定することもできます。
構文 | Rnd[(Number)] | ||||
---|---|---|---|---|---|
引数 | 省略 | 説明 | |||
Number | ● | 乱数作成方法の指定。 number < 0 ・・・常に、Number のシード値によって決まる同じ数値を返します。 number > 0 ・・・乱数系列の次の乱数を返します。 number = 0 ・・・直前に生成した乱数を返します。 省略した場合 ・・・乱数系列の次の乱数を返します。 |
Randomizeステートメントは乱数ジェネレータを初期化 (乱数系列を再設定) します。Randomizeステートメントを使用しない場合、引数を指定しないでRnd関数を呼び出すと、最初にRnd 関数を呼び出したときのシード値(乱数ジェネレータの状態変数)と同じ値が使用されてしまいます。それ以降も直前に生成された数がシード値として使用されますので、Rnd関数を利用する場合は、必ず初期化させます。
構文 | Randomize[number] | ||||
---|---|---|---|---|---|
引数 | 省略 | 説明 | |||
Number | ● | Rnd関数で使用される乱数のシード値を設定。 |
StrConv関数は指定した文字列を指定した変換の種類で変換した文字列を返す関数です。
構文 | StrConv(string, conversion) | ||||
---|---|---|---|---|---|
引数 | 省略 | 説明 | |||
string | × | 変換する文字列。 | |||
conversion | × | 変換の種類を指定します。 |
定数 | 値 | 内容 |
---|---|---|
vbUpperCase | 1 | 文字列を大文字に変換します。 |
vbLowerCase | 2 | 文字列を小文字に変換します。 |
vbProperCase | 3 | 文字列の各単語の先頭の文字を大文字に変換します。 |
vbWide | 4 | 文字列内の半角文字を全角文字に変換します。 |
vbNarrow | 8 | 文字列内の全角文字を半角文字に変換します。 |
vbKatakana | 16 | 文字列内のひらがなをカタカナに変換します。 |
vbHiragana | 32 | 文字列内のカタカナをひらがなに変換します。 |
vbUnicode | 64 | システムの既定のコードページを使って文字列をUnicodeに変換します。 |
vbFromUnicode | 128 | 文字列をUnicodeからシステムの既定のコードページに変換します。 |
今回のサンプルコードは指定した桁数で文字列を自動生成するマクロになります。
Sub sample()
Dim i As Integer, n As Integer
Dim kana As String, str1 As String
kana = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん" & _
"がぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽ"
For i = 1 To 5
'乱数ジェネレータを初期化
Randomize
'71個のかな文字
n = Int((71 - 1 + 1) * Rnd + 1)
str1 = str1 + Mid(kana, n, 1)
Next i
Debug.Print "ひらがなの文字列:" & str1
Debug.Print "カタカナ(全角)の文字列:" & StrConv(str1, vbKatakana)
Debug.Print "カタカナ(半角)の文字列:" & StrConv(StrConv(str1, vbKatakana), vbNarrow)
End Sub
※ドラッグ(スワイプ)すると全体を確認できます。
ランダムでひらがな・カタカナ(全角)・カタカナ(半角)の文字列が生成される。
ひらがなの文字列:うだずんぽ
カタカナ(全角)の文字列:ウダズンポ
カタカナ(半角)の文字列:ウダズンポ
Dim i As Integer, n As Integer
Dim kana As String, str1 As String
※ドラッグ(スワイプ)すると全体を確認できます。
型をを宣言します。
kana = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん" & _
"がぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽ"
※ドラッグ(スワイプ)すると全体を確認できます。
変数kanaにひらがなの文字列を格納します。
For i = 1 To 5
(省略)
Next
※ドラッグ(スワイプ)すると全体を確認できます。
For~Nextステートメントを利用して、5桁のパスワードを生成するためにループ処理をしています。
'乱数ジェネレータを初期化
Randomize
※ドラッグ(スワイプ)すると全体を確認できます。
Randomizeステートメントを利用して、乱数をする際に乱数ジェネレータを初期化させます。
'71個のかな文字
n = Int((71 - 1 + 1) * Rnd + 1)
※ドラッグ(スワイプ)すると全体を確認できます。
Int関数・Rnd関数を利用して、1~71(変数kanaの文字数)からランダムで数字を抽出します。
str1 = str1 + Mid(kana, n, 1)
※ドラッグ(スワイプ)すると全体を確認できます。
Mid関数を利用して、変数kanaの文字列から1文字ランダムで抽出します。また、ループ処理をさせているので、5回文字を結合します。
Debug.Print "ひらがなの文字列:" & str1
Debug.Print "カタカナ(全角)の文字列:" & StrConv(str1, vbKatakana)
Debug.Print "カタカナ(半角)の文字列:" & StrConv(StrConv(str1, vbKatakana), vbNarrow)
※ドラッグ(スワイプ)すると全体を確認できます。
ひらがな・カタカナ(全角)・カタカナ(半角)の文字列をそれぞれ抽出しています。ここでは、ひらがな・カタカナ(全角)・カタカナ(半角)で指定した桁数でランダム生成しましたが、変換方法を指定して文字列を生成するサブルーチンを作成していきましょう。
Function strGet(cnt As Integer, Optional chrType As String) As String
Dim i As Integer, n As Integer
Dim kana As String, str1 As String
kana = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん" & _
"がぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽ"
For i = 1 To cnt
'乱数ジェネレータを初期化
Randomize
'71個のかな文字
n = Int((71 - 1 + 1) * Rnd + 1)
str1 = str1 + Mid(kana, n, 1)
Next i
If chrType = "カタカナ" Then
'全角カタカナ
strGet = StrConv(str1, vbKatakana)
ElseIf chrType = "カタカナ" Then
'半角カタカナ
strGet = StrConv(StrConv(str1, vbKatakana), vbNarrow)
Else
'ひらがな
strGet = str1
End If
End Function
※ドラッグ(スワイプ)すると全体を確認できます。
こちらが「指定した桁数の文字列をランダム自動生成するサブルーチン」になります。こちらは戻り値が必要ですので、functionプロシージャで対応しています。引数には「文字列桁数」「文字列タイプ」の2つが設定されています。以下が引数の詳細になります。
構文 | strGet(cnt [,chrType]) | ||||
---|---|---|---|---|---|
引数名 | データ型 | 内容 | 値の事例 | 初期値 | 省略 |
cnt | Integer | 文字列桁数 | 5,8,10 | × | |
chrType | String | 文字列タイプ | "カタカナ"・・・全角カタカナ, "カタカナ"・・・半角カタカナ 指定なし・・・ひらがな | ● |
「cnt」は必須項目です。「cnt」には、文字列の桁数を設定します。「chrType」には、文字列のタイプを設定します。「カタカナ」を指定した場合は、全角カタカナの文字列を、「カタカナ」を指定した場合は半角カタカナの文字列を設定します。また、何も指定しない場合は、ひらがなの文字列を生成します。
Sub sample()
Debug.Print "桁数10桁のひらがな文字列:" & strGet(10)
Debug.Print "桁数8桁のカタカナ(全角)文字列:" & strGet(8, "カタカナ")
Debug.Print "桁数5桁のカタカナ(半角)文字列:" & strGet(5, "カタカナ")
End Sub
※ドラッグ(スワイプ)すると全体を確認できます。
桁数10桁のひらがな文字列:すわうゆをらぜでけよ
桁数8桁のカタカナ(全角)文字列:リジパヅヘゲオミ
桁数5桁のカタカナ(半角)文字列:ヂゴヤクナ
今回は、3つの文字列を設定しています。文字列タイプを設定していない場合はひらがな文字列が自動生成されているのが、分かるかとおもいます。
今回は、strGetサブルーチンを利用して指定した桁数で文字列を自動生成する方法について解説しました。文字列を生成してアカウント作成する場合は、必ず文字列はエクセルシートに保存するようにしましょう。
次の記事: VBAでIE操作に役立つ名前をランダムで自動生成 >>
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
↑VBAのIE操作で分からない事があればこちらの掲示板よりご質問ください。
ExcelのVBA初心者入門↑こちらはVBAをマスターできるよう初心者向けのエクセルVBA入門コンテンツになります。
こちらでは、これまでに紹介したIE(InternetExplorer)操作で便利な機能をツール化しています。無償でダウンロードできますので、目的に合わせたご利用ください。
こちらでは、IE(InternetExplorer)オブジェクトのメソッド・プロパティをまとめています。
こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたVBA関数をまとめています。
こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたステートメントをまとめています。ExcelのVBAで基本的な部分になりますので、しっかり理解しましょう。
こちらでは、これまでに作成したIE(InternetExplorer)操作で役立つサブルーチンをまとめています。
全てをコピーする必要はありませんが、目的に合わせたサブルーチンをご利用ください。
こちらでは、IE(InternetExplorer)制御の利用だけでなく、Excel全般で利用できるVBAコードです。エクセルVBAで役に立つものばかりですので、ご利用ください。