ニックネームをランダムで自動生成「nicknameGet」の解説
前回の「名前をランダムで自動生成」では名前を自動生成する方法を解説しましたが、今回はニックネームをランダム自動生成する方法について解説します。こちらも登録時には必要となる場合がある項目です。
目次
- ニックネームをランダムで自動生成する処理の流れ
- 利用する関数・サブルーチンについて
- ニックネームをランダムで自動生成するサンプルコード
- ニックネームをランダムで自動生成するサブルーチン「nicknameGet」の解説
- 「nicknameGet」を利用してニックネームをランダムで自動生成するサンプルコード
- まとめ
ニックネームをランダムで自動生成する処理の流れ
以下が今回の処理の流れになります。
- ①変数宣言
- ②「ieView」を利用してニックネームデータページをIEで起動
- ③「makeRndInt」を利用して、ランダムでテーブルの行番号を取得
- ④テーブルデータを取得
- ⑤ニックネームデータを抽出
- ⑥「IEオブジェクト」を閉じる
利用する関数・サブルーチンについて
今回利用する関数・サブルーチンは以下になります。- ieViewとは
- ieCheckとは
- makeRndIntとは
- StrConv関数とは
ieViewとは
ieViewは指定したURLをIEで起動させ、Webページが完全に読み込まれるまで待機処理をするマクロです。引数には「IEオブジェクト」「指定URL」「IEの表示・非表示」の3つが設定されています。以下が引数の詳細になります。
構文 | ieView(objIE,urlName,[viewFlg]) | ||||
---|---|---|---|---|---|
引数名 | データ型 | 内容 | 値の事例 | 初期値 | 省略 |
objIE | InternetExplorer | IEオブジェクト | objIE,objIE2 | × | |
urlName | String | 表示させたいURLの文字列 | "http://www.vba-ie.net/" | × | |
viewFlg | Boolean | IE表示・非表示の値 | True,False | True | ● |
「objIE」「urlName」は必須項目で、「objIE」にはIEオブジェクトを設定します。複数のIEオブジェクトを操作する場合には「objIE」「objIE2」といった複数のIEオブジェクトを指定してください。オブジェクト作成により、プロパティやメソッドの利用が可能となりIE(InternetExplorer)を制御することがでます。
「urlName」には、表示させたいURLを設定します。
次に「viewFlg」ですが、こちらはIEの表示・非表示を決定する部分となります。
「Visibleプロパティ」はデフォルトがFalseですので、初期設定ではTrueを設定させています。また、こちらはOptionalを付けて宣言した引数ですので省略することができます。
ieCheckとは
ieCheckはWebページが完全に読み込まれるまで待機処理をするマクロです。引数には「IEオブジェクト」の1つが設定されています。以下が引数の詳細になります。
構文 | ieCheck(objIE) |
---|
引数名 | データ型 | 内容 | 値の事例 | 初期値 | 省略 |
---|---|---|---|---|---|
objIE | InternetExplorer | IEオブジェクト | objIE,objIE2 | × |
「objIE」は必須項目で、IEオブジェクトを設定します。複数のIEオブジェクトを操作する場合には「objIE」「objIE2」といった複数のIEオブジェクトを指定してください。
makeRndIntとは
makeRndIntは指定した範囲でランダム(乱数)の整数を取得するマクロです。こちらは戻り値が必要ですので、functionプロシージャで対応しています。引数には取得する整数の「最小値」「最大値」の2つが設定されています。以下が引数の詳細になります。
構文 | makeRndInt(minInt, maxInt) | ||||
---|---|---|---|---|---|
引数名 | データ型 | 内容 | 値の事例 | 初期値 | 省略 |
minInt | Integer | 取得する整数の最小値 | 0 | × | |
maxInt | Integer | 取得する整数の最大値 | 100 | × |
「minInt」「maxInt」は必須項目です。「minInt」には取得する整数の最小値を設定します。「maxInt」には取得する整数の最大値を設定します。
StrConv関数とは
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 objIE92 As InternetExplorer
Dim objTag92 As Object
Dim i As Integer, i2 As Integer
'ニックネームページをIE(InternetExplorer)で起動
Call ieView(objIE92, "http://www.vba-ie.net/code/nicknamedata.html")
'ランダムでテーブルの行番号を取得(語頭用)
i = makeRndInt(1, 50)
'ランダムでテーブルの行番号を取得(語尾用)
i2 = makeRndInt(1, 50)
'テーブルデータを取得
Set objTag92 = objIE92.document.getElementsByTagName("table")(0)
With objTag92
Debug.Print "ニックネーム:" & .Rows(i).Cells(0).innerText & .Rows(i2).Cells(2).innerText
Debug.Print "ニックネーム(ローマ字):" & .Rows(i).Cells(1).innerText & .Rows(i2).Cells(3).innerText
End With
'IEオブジェクトを閉じる
objIE92.Quit
End Sub
実行結果
ランダムでニックネームの文字列が生成される。
ニックネーム:くまくん
ニックネーム(ローマ字):kumakun
解説
Dim objIE92 As InternetExplorer
Dim objTag92 As Object
Dim i As Integer, i2 As Integer
型をを宣言します。
'ニックネームページをIE(InternetExplorer)で起動
Call ieView(objIE92, "http://www.vba-ie.net/code/nicknamedata.html")
ieViewを利用して、ニックネームページを表示させます。
'ランダムでテーブルの行番号を取得(語頭用)
i = makeRndInt(1, 50)
'ランダムでテーブルの行番号を取得(語尾用)
i2 = makeRndInt(1, 50)
makeRndIntを利用して、ランダムでテーブルの行番号を取得します。
'テーブルデータを取得
Set objTag92 = objIE92.document.getElementsByTagName("table")(0)
getElementsByTagNameメソッドを利用して、テーブル情報を取得します。
With objTag92
Debug.Print "ニックネーム:" & .Rows(i).Cells(0).innerText & .Rows(i2).Cells(2).innerText
Debug.Print "ニックネーム(ローマ字):" & .Rows(i).Cells(1).innerText & .Rows(i2).Cells(3).innerText
End With
innerTextプロパティを利用して、それぞれのセル番地を指定し、ニックネームを抽出しています。
'IEオブジェクトを閉じる
objIE92.Quit
最後にIEオブジェクトを閉じます。テーブル情報は、語頭が50、語尾が50用意されています。続いてサブルーチンを作成していきましょう。
ニックネームをランダムで自動生成するサブルーチン「nameGet」の解説
Function nicknameGet(Optional num As Integer = 1, Optional numPlus As Boolean = False) As Collection
Dim objIE92 As InternetExplorer
Dim objTag92 As Object
Dim i As Integer, n As Integer
Dim tmp As Variant
Dim strN As String, strA As String, arrInt As String, strNum As String
Dim arrNickName As New Collection
'ニックネームページをIE(InternetExplorer)で起動
Call ieView(objIE92, "http://www.vba-ie.net/code/nicknamedata.html", False)
'語尾にプラスする枝番
If numPlus = True Then
strNum = makeRndInt(50, 9999)
Else
strNum = ""
End If
'ランダムでテーブルの行番号を取得(語頭用)・・・接続回数分(num)
For n = 1 To num
arrInt = arrInt & "," & makeRndInt(1, 50)
Next n
'先頭の,を削除
arrInt = Right(arrInt, Len(arrInt) - 1)
'テーブルの行番号を配列に格納(語頭用)
tmp = Split(arrInt, ",")
Set objTag92 = objIE92.document.getElementsByTagName("table")(0)
'語尾を取得(配列回数分)
For i = LBound(tmp) To UBound(tmp)
strN = strN & objTag92.Rows(tmp(i)).Cells(0).innerText 'ニックネーム
strA = strA & objTag92.Rows(tmp(i)).Cells(1).innerText 'ニックネーム(ローマ字)
Next i
'ランダムでテーブルの行番号を取得(語尾用)
i = makeRndInt(1, 50)
strN = strN & objTag92.Rows(i).Cells(2).innerText & strNum 'ニックネーム
strA = strA & objTag92.Rows(i).Cells(3).innerText & strNum 'ニックネーム(ローマ字)
arrNickName.Add strN, "N" 'ニックネーム
arrNickName.Add StrConv(strN, vbKatakana), "NKW" 'ニックネーム(カナ[全角])
arrNickName.Add StrConv(StrConv(strN, vbKatakana), vbNarrow), "NKN" 'ニックネーム(カナ[半角])
arrNickName.Add StrConv(StrConv(strA, vbWide), vbUpperCase), "NAWU" 'ニックネーム(ローマ字[全角][大文字])
arrNickName.Add StrConv(strA, vbUpperCase), "NAWL" 'ニックネーム(ローマ字[全角][小文字])
arrNickName.Add StrConv(strA, vbWide), "NANU" 'ニックネーム(ローマ字[半角][大文字])
arrNickName.Add strA, "NANL" 'ニックネーム(ローマ字[半角][小文字])
Set nicknameGet = arrNickName
'IEオブジェクトを閉じる
objIE92.Quit
End Function
こちらが「ニックネームをランダムで自動生成するサブルーチン」になります。こちらは戻り値が必要ですので、functionプロシージャで対応しています。引数には「連結回数」「数字の有無」の2つが設定されています。以下が引数の詳細になります。
構文 | nicknameGet([num][,numPlus]) | ||||
---|---|---|---|---|---|
引数名 | データ型 | 内容 | 値の事例 | 初期値 | 省略 |
num | Integer | 連結回数 | 1,3,5 | 1 | ● |
numPlus | Boolean | 数字の有無 | True,False | False | ● |
戻り値 | |||||
データ | 配列key | 命名ルール | 内容 | ||
ニックネーム(ひらがな) | N | NickName | NickName(ニックネーム)の頭文字をkey設定。 | ||
ニックネーム(カナ[全角]) | NKW | NickName Ktakana Wide | NickName(ニックネーム),Katanaka(カタカナ),Wide(全角)の頭文字をkey設定。 | ||
ニックネーム(カナ[半角]) | NKN | NickName Ktakana Narrow | NickName(ニックネーム),Katanaka(カタカナ),Narrow(半角)の頭文字をkey設定。 | ||
ニックネーム(ローマ字[全角][大文字]) | NAWU | NickName Alphabet Wide Upper | NickName(ニックネーム),Alphabet(ローマ字),Wide(全角),Upper(大文字)の頭文字をkey設定。 | ||
ニックネーム(ローマ字[全角][小文字]) | NAWL | NickName Alphabet Wide Nower | NickName(ニックネーム),Alphabet(ローマ字),Wide(全角),Lower(小文字)の頭文字をkey設定。 | ||
ニックネーム(ローマ字[半角][大文字]) | NANU | NickName Alphabet Narrow Upper | NickName(ニックネーム),Alphabet(ローマ字),Wide(全角),Upper(大文字)の頭文字をkey設定。 | ||
ニックネーム(ローマ字[半角][小文字]) | NANL | NickName Alphabet Narrow Nower | NickName(ニックネーム),Alphabet(ローマ字),Wide(全角),Lower(小文字)の頭文字をkey設定。 |
「num」「numPlus」は任意項目です。「num」には、ニックネームの語頭の連結回数を設定します。現在、ニックネームページには語頭×50、語尾×50ですので、全パターンは2500パターンあります。
一意のニックネームを要求される場合は、同一ニックネームになる恐れがありますので、語頭部分の連結回数を指定することで、パターンを増やすことができます。例えば、連結回数を3に設定した場合、語頭×50×50×50、語尾×50で全パターン625万パターンになります。次に「numPlus」ですが、こちらは語尾に任意の数字を連結するかの有無になります。「True」を選択するとニックネームの語尾に50~9999のいずれかの数値が連結されます。初期設定は「False」に設定されているので、数字連結をしない場合は設定しないようにしてください。
「nicknameget」を利用してニックネームをランダムで自動生成するサンプルコード
Sub sample()
Set arrName = nicknameGet()
Debug.Print "ニックネーム:" & arrName("N")
Debug.Print "ニックネーム(カナ[全角]):" & arrName("NKW")
Debug.Print "ニックネーム(カナ[半角]):" & arrName("NKN")
Debug.Print "ニックネーム(ローマ字[全角][大文字]):" & arrName("NAWU")
Debug.Print "ニックネーム(ローマ字[全角][小文字]):" & arrName("NAWL")
Debug.Print "ニックネーム(ローマ字[半角][大文字]):" & arrName("NANU")
Debug.Print "ニックネーム(ローマ字[半角][小文字]):" & arrName("NANL")
Set arrName = nicknameGet(2, True)
Debug.Print "ニックネーム2:" & arrName("N")
End Sub
実行結果
ニックネーム:いずりけん
ニックネーム(カナ[全角]):イズリケン
ニックネーム(カナ[半角]):イズリケン
ニックネーム(ローマ字[全角][大文字]):IZURIKEN
ニックネーム(ローマ字[全角][小文字]):IZURIKEN
ニックネーム(ローマ字[半角][大文字]):izuriken
ニックネーム(ローマ字[半角][小文字]):izuriken
ニックネーム2:らぶあれんでぃうす1878
解説
今回は、何も設定しないパターンと、語頭連結回数を2と数字連結を併せた処理を行いました。結果から分かるようにニックネームのパターン数は自由に設定できますので、サービスの内容に沿った利用方法をしてください。また、こちらでも連想配列にするために「Collection」で宣言しています。「Collection」を利用することでKeyによる識別が可能となります。今回設定したkeyはそれぞれの頭文字を利用しています。プログラミングはほぼ英語ですので、なるべく英単語を覚えるようにしましょう。最初はどれがどれか分からないかもしれませんが、英単語を覚えると自ずと理解できるようになります。
まとめ
今回は、nicknameGetサブルーチンを利用してニックネームをランダムで自動生成する方法について解説しました。ニックネームを生成してアカウント作成する場合は、必ず文字列はエクセルシートに保存するようにしましょう。
次の記事: VBAでIE操作に役立つ生年月日をランダムで自動生成 >>
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
↑エクセルVBAのIE(InternetExplorer)操作で分からない事があればこちらの掲示板よりご質問ください^^
ExcelのVBA初心者入門↑こちらはExcelのVBAをマスターできるよう初心者向けのエクセルVBA入門コンテンツになります^^
VBAでIE(InternetExplorer)制御の準備
エクセルVBAでHTMLエレメント基本操作
エクセルVBAでHTMLエレメント実践操作
エクセルVBAでHTMLフォーム基本操作
エクセルVBAでHTMLフレームの基本操作
【ダウンロード】IE操作に便利なツール
こちらでは、これまでに紹介したIE(InternetExplorer)操作で便利な機能をツール化しています。無償でダウンロードできますので、目的に合わせたご利用ください。
IEオブジェクトのメソッド・プロパティ
こちらでは、IE(InternetExplorer)オブジェクトのメソッド・プロパティをまとめています。
IE操作に利用されているVBA関数
こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたVBA関数をまとめています。
IE操作に利用されているステートメント
こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたステートメントをまとめています。ExcelのVBAで基本的な部分になりますので、しっかり理解しましょう。
IE(InternetExplorer)制御のVBAコード
こちらでは、これまでに作成したIE(InternetExplorer)操作で役立つサブルーチンをまとめています。
全てをコピーする必要はありませんが、目的に合わせたサブルーチンをご利用ください。
ExcelのVBAで作成した役立つVBAコード
こちらでは、IE(InternetExplorer)制御の利用だけでなく、Excel全般で利用できるVBAコードです。エクセルVBAで役に立つものばかりですので、ご利用ください。
- 最終行(列)取得「maxRC」
- 検索キーワード行(列)取得「searchRC」
- Basic認証自動ログイン「ieBasic」
- Basic認証自動ログイン「ieBasic2」
- InternetExplorerのバージョンチェック「ieVerCheck」
- 文字列から数字だけ抽出「numExtract」
- 正規表現からデータを抽出「regValue」
- 1階層上の親ディレクトリパス取得「ParentDirName」
- セルの重複データ削除「duplicateDataDel」
- クリップボードにデータ格納「CBSetText」
- IEのクッキー削除「cookiesDel」
- 新しいフォルダを作成「folderCreate」
- 指定フォルダ内のファイル一覧(ファイル名)を取得「fileName」
- 指定フォルダ内のファイル情報を配列格納「fileNameF」
- 指定フォルダ内(サブフォルダ含む)のファイル一覧を取得「fileNameAll」
- 指定フォルダ内(サブフォルダ含む)のファイル情報を配列格納「fileNameAllF」
- 指定した範囲でランダム(乱数)の整数を取得「makeRndInt」
- 郵便番号をランダムで自動取得「postGet」
- 指定した桁数でパスワードをランダム自動生成「passwordGet」
- 指定した桁数で文字列をランダム自動生成「strGet」
- ランダムで名前(かな・ローマ字)を自動生成「nameGet」
- ランダムでニックネームを自動生成「nicknameGet」
- ランダムで生年月日を自動生成「birthdayGet」