VBAのIE(InternetExplorer)制御で役立つ名前をランダムで自動生成する制御方法について解説しています。
前回の「指定した桁数で文字列をランダム自動生成」では秘密の答えなど文字列を自動生成しましたが、今回は名前をランダム自動生成する方法について解説します。こちらも登録時にはほぼ必須項目である名前ですが、漢字・かな読み・ローマ字など様々な入力項目があります。その全てのパターンを配列に格納しておけば、自動入力も非常に楽に行えます。
以下が今回の処理の流れになります。
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はWebページが完全に読み込まれるまで待機処理をするマクロです。引数には「IEオブジェクト」の1つが設定されています。以下が引数の詳細になります。
構文 | ieCheck(objIE) |
---|
引数名 | データ型 | 内容 | 値の事例 | 初期値 | 省略 |
---|---|---|---|---|---|
objIE | InternetExplorer | IEオブジェクト | objIE,objIE2 | × |
「objIE」は必須項目で、IEオブジェクトを設定します。複数のIEオブジェクトを操作する場合には「objIE」「objIE2」といった複数のIEオブジェクトを指定してください。
makeRndIntは指定した範囲でランダム(乱数)の整数を取得するマクロです。こちらは戻り値が必要ですので、functionプロシージャで対応しています。引数には取得する整数の「最小値」「最大値」の2つが設定されています。以下が引数の詳細になります。
構文 | makeRndInt(minInt, maxInt) | ||||
---|---|---|---|---|---|
引数名 | データ型 | 内容 | 値の事例 | 初期値 | 省略 |
minInt | Integer | 取得する整数の最小値 | 0 | × | |
maxInt | Integer | 取得する整数の最大値 | 100 | × |
「minInt」「maxInt」は必須項目です。「minInt」には取得する整数の最小値を設定します。「maxInt」には取得する整数の最大値を設定します。
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 objIE91 As InternetExplorer
Dim objTag91 As Object
Dim i As Integer
'名前ページをIE(InternetExplorer)で起動
Call ieView(objIE91, "http://www.vba-ie.net/code/namedata.html")
'ランダムでテーブルの行番号を取得
i = makeRndInt(1, 100)
'テーブルデータを取得
Set objTag91 = objIE91.document.getElementsByTagName("table")(0)
Debug.Print "姓(漢字):" & objTag91.Rows(i).Cells(0).innerText '姓(漢字)
Debug.Print "姓(かな):" & objTag91.Rows(i).Cells(1).innerText '姓(かな)
Debug.Print "姓(ローマ字):" & objTag91.Rows(i).Cells(2).innerText '姓(ローマ字)
Debug.Print "名(漢字):" & objTag91.Rows(i).Cells(3).innerText '名(漢字)
Debug.Print "名(かな):" & objTag91.Rows(i).Cells(4).innerText '名(かな)
Debug.Print "名(ローマ字):" & objTag91.Rows(i).Cells(5).innerText '名(ローマ字)
'IEオブジェクトを閉じる
objIE91.Quit
End Sub
※ドラッグ(スワイプ)すると全体を確認できます。
ランダムで名前の文字列が生成される。
姓(漢字):谷口
姓(かな):たにぐち
姓(ローマ字):taniguchi
名(漢字):結衣
名(かな):ゆい
名(ローマ字):yui
Dim objIE91 As InternetExplorer
Dim objTag91 As Object
Dim i As Integer
※ドラッグ(スワイプ)すると全体を確認できます。
型をを宣言します。
'名前ページをIE(InternetExplorer)で起動
Call ieView(objIE91, "http://www.vba-ie.net/code/namedata.html")
※ドラッグ(スワイプ)すると全体を確認できます。
ieViewを利用して、名前ページを表示させます。
'ランダムでテーブルの行番号を取得
i = makeRndInt(1, 100)
※ドラッグ(スワイプ)すると全体を確認できます。
makeRndIntを利用して、ランダムでテーブルの行番号を取得します。
'テーブルデータを取得
Set objTag91 = objIE91.document.getElementsByTagName("table")(0)
※ドラッグ(スワイプ)すると全体を確認できます。
getElementsByTagNameメソッドを利用して、テーブル情報を取得します。
Debug.Print "姓(漢字):" & objTag91.Rows(i).Cells(0).innerText '姓(漢字)
Debug.Print "姓(かな):" & objTag91.Rows(i).Cells(1).innerText '姓(かな)
Debug.Print "姓(ローマ字):" & objTag91.Rows(i).Cells(2).innerText '姓(ローマ字)
Debug.Print "名(漢字):" & objTag91.Rows(i).Cells(3).innerText '名(漢字)
Debug.Print "名(かな):" & objTag91.Rows(i).Cells(4).innerText '名(かな)
Debug.Print "名(ローマ字):" & objTag91.Rows(i).Cells(5).innerText '名(ローマ字)
※ドラッグ(スワイプ)すると全体を確認できます。
innerTextプロパティを利用して、それぞれのセル番地を指定し、名前を抽出しています。
'IEオブジェクトを閉じる
objIE91.Quit
※ドラッグ(スワイプ)すると全体を確認できます。
最後にIEオブジェクトを閉じます。テーブル情報は、男性の名前が50、女性の名前が50用意されています。性別で名前を選択できるよなサブルーチンを作成していきましょう。
Function nameGet(Optional sex As String) As Collection
Dim objIE91 As InternetExplorer
Dim objTag91 As Object
Dim minInt As Integer, maxInt As Integer, LName As Integer, FName As Integer
Dim arrName As New Collection
'名前ページをIE(InternetExplorer)で起動
Call ieView(objIE91, "http://www.vba-ie.net/code/namedata.html", False)
If sex = "" Then
minInt = 1
maxInt = 100
ElseIf sex = "男" Then
minInt = 1
maxInt = 50
ElseIf sex = "女" Then
minInt = 51
maxInt = 100
End If
LName = makeRndInt(1, 100)
FName = makeRndInt(minInt, maxInt)
Set objTag91 = objIE91.document.getElementsByTagName("table")(0)
With objTag91.Rows(LName)
arrName.Add .Cells(0).innerText, "L" '姓(漢字)
arrName.Add .Cells(1).innerText, "LH" '姓(かな)
arrName.Add StrConv(.Cells(1).innerText, vbKatakana), "LKW" '姓(カナ[全角])
arrName.Add StrConv(StrConv(.Cells(1).innerText, vbKatakana), vbNarrow), "LKN" '姓(カナ[半角])
arrName.Add StrConv(StrConv(.Cells(2).innerText, vbWide), vbUpperCase), "LAWU" '姓(ローマ字[全角][大文字])
arrName.Add StrConv(.Cells(2).innerText, vbUpperCase), "LAWL" '姓(ローマ字[全角][小文字])
arrName.Add StrConv(.Cells(2).innerText, vbWide), "LANU" '姓(ローマ字[半角][大文字])
arrName.Add .Cells(2).innerText, "LANL" '姓(ローマ字[半角][小文字])
End With
With objTag91.Rows(FName)
arrName.Add .Cells(3).innerText, "F" '名(漢字)
arrName.Add .Cells(4).innerText, "FH" '名(かな)
arrName.Add StrConv(.Cells(4).innerText, vbKatakana), "FKW" '名(カナ[全角])
arrName.Add StrConv(StrConv(.Cells(4).innerText, vbKatakana), vbNarrow), "FKN" '名(カナ[半角])
arrName.Add StrConv(StrConv(.Cells(5).innerText, vbWide), vbUpperCase), "FAWU" '名(ローマ字[全角][大文字])
arrName.Add StrConv(.Cells(5).innerText, vbUpperCase), "FAWL" '名(ローマ字[全角][小文字])
arrName.Add StrConv(.Cells(5).innerText, vbWide), "FANU" '名(ローマ字[半角][大文字])
arrName.Add .Cells(5).innerText, "FANL" '名(ローマ字[半角][小文字])
End With
Set nameGet = arrName
'IEオブジェクトを閉じる
objIE91.Quit
End Function
※ドラッグ(スワイプ)すると全体を確認できます。
こちらが「名前をランダムで自動生成するサブルーチン」になります。こちらは戻り値が必要ですので、functionプロシージャで対応しています。引数には「性別」の1つが設定されています。以下が引数の詳細になります。
構文 | nameGet([sex]) | ||||
---|---|---|---|---|---|
引数名 | データ型 | 内容 | 値の事例 | 初期値 | 省略 |
sex | String | 性別文字列 | "男","女" | ● | |
戻り値 | |||||
データ | 配列key | 命名ルール | 内容 | ||
姓(漢字) | L | LastName | LastName(姓)の頭文字をkey設定。 | ||
姓(かな) | LH | LastName Hiragana | LastName(姓),Hiragana(ひらがな)の頭文字をkey設定。 | ||
姓(カナ[全角]) | LKW | LastName Ktakana Wide | LastName(姓),Katanaka(カタカナ),Wide(全角)の頭文字をkey設定。 | ||
姓(カナ[半角]) | LKN | LastName Ktakana Narrow | LastName(姓),Katanaka(カタカナ),Narrow(半角)の頭文字をkey設定。 | ||
姓(ローマ字[全角][大文字]) | LAWU | LastName Alphabet Wide Upper | LastName(姓),Alphabet(ローマ字),Wide(全角),Upper(大文字)の頭文字をkey設定。 | ||
姓(ローマ字[全角][小文字]) | LAWL | LastName Alphabet Wide Lower | LastName(姓),Alphabet(ローマ字),Wide(全角),Lower(小文字)の頭文字をkey設定。 | ||
姓(ローマ字[半角][大文字]) | LANU | LastName Alphabet Narrow Upper | LastName(姓),Alphabet(ローマ字),Wide(全角),Upper(大文字)の頭文字をkey設定。 | ||
姓(ローマ字[半角][小文字]) | LANL | LastName Alphabet Narrow Lower | LastName(姓),Alphabet(ローマ字),Wide(全角),Lower(小文字)の頭文字をkey設定。 | ||
名(漢字) | F | FirstName | FirstName(名)の頭文字をkey設定。 | ||
名(かな) | FH | FirstName Hiragana | FirstName(名),Hiragana(ひらがな)の頭文字をkey設定。 | ||
名(カナ[全角]) | FKW | FirstName Ktakana Wide | FirstName(名),Katanaka(カタカナ),Wide(全角)の頭文字をkey設定。 | ||
名(カナ[半角]) | FKN | FirstName Ktakana Narrow | FirstName(名),Katanaka(カタカナ),Narrow(半角)の頭文字をkey設定。 | ||
名(ローマ字[全角][大文字]) | FAWU | FirstName Alphabet Wide Upper | FirstName(名),Alphabet(ローマ字),Wide(全角),Upper(大文字)の頭文字をkey設定。 | ||
名(ローマ字[全角][小文字]) | FAWL | FirstName Alphabet Wide Lower | FirstName(名),Alphabet(ローマ字),Wide(全角),Lower(小文字)の頭文字をkey設定。 | ||
名(ローマ字[半角][大文字]) | FANU | FirstName Alphabet Narrow Upper | FirstName(名),Alphabet(ローマ字),Wide(全角),Upper(大文字)の頭文字をkey設定。 | ||
名(ローマ字[半角][小文字]) | FANL | FirstName Alphabet Narrow Lower | FirstName(名),Alphabet(ローマ字),Wide(全角),Lower(小文字)の頭文字をkey設定。 |
「sex」は任意項目です。「sex」には、男性もしくは女性の名前を取得したい場合に設定します。「男」を指定すると男性の名前が、「女」を指定すると女性の名前が、指定しない場合は男性・女性のどちらかの名前が取得されます。
Sub sample()
Set arrName = nameGet("男")
Debug.Print "姓(漢字):" & arrName("L")
Debug.Print "姓(かな):" & arrName("LH")
Debug.Print "姓(ローマ字[全角][大文字]):" & arrName("LAWU")
Debug.Print "名(漢字):" & arrName("F")
Debug.Print "名(カナ[半角]):" & arrName("FKN")
Debug.Print "名(ローマ字[半角][小文字]):" & arrName("FANL")
End Sub
※ドラッグ(スワイプ)すると全体を確認できます。
姓(漢字):松田
姓(かな):まつだ
姓(ローマ字[全角][大文字]):MATSUDA
名(漢字):颯太
名(カナ[半角]):ソウタ
名(ローマ字[半角][小文字]):souta
今回は、「男」で設定した名前を出力させました。今回、連想配列にするために「Collection」で宣言しています。「Collection」を利用することでKeyによる識別が可能となります。今回設定したkeyはそれぞれの頭文字を利用しています。プログラミングはほぼ英語ですので、なるべく英単語を覚えるようにしましょう。最初はどれがどれか分からないかもしれませんが、英単語を覚えると自ずと理解できるようになります。
今回は、nameGetサブルーチンを利用して名前をランダムで自動生成する方法について解説しました。名前を生成してアカウント作成する場合は、必ず文字列はエクセルシートに保存するようにしましょう。
次の記事: 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で役に立つものばかりですので、ご利用ください。