For 〜 Next-For 指定の値まで連続実行
1 から 指定の値 まで加算する − For-Next の仕様
値の指定は、インプットボックスから入力。
001 !
002 ! 1〜n までの和
003 !
004 Set // カウンタ n
005 Set // 結果 S 0
006 Set // 値の入力 Nmax InputBox("加算する値の最終値を入力して下さい。","値の入力",100)
007 If %Nmax% = ""
008 QUIT // 空白→キャンセル
009 End-If
010 !
011 For n;1;%Nmax%
012 AddVar // 加算 S ← S+n %S% %n%
013 Next-For
014 !
015 MSG_BOX // 結果表示 結果 Nmax = %Nmax% S = %S%
コードの使用方法
For 〜 Next-For を使ったCSVファイル処理 14.37版以降
For〜Next-For を使用してCSVファイルからデータを読み込み、指定アプリのフィールドに入力します。
下図左は、入力先アプリと応答メッセージ
右は、入力元のCSVファイルデータ
処理手順
・入力対象のアプリを起動
・CSVデータを読み込む − CSV読込
レコード数は、CsvRecordCnt にセットされる
・変数定義
n:カウンタ Dt:データの読込先
・繰り返し処理開始 1レコード目から最終レコードまで
先頭フィールドに移動 LeftCkick
・第1フィールドを取出し GetCsvData → Dt
・データ入力 − 文章入力
・TABで次のフィールドへ移動
・第2フィールドを取出し → Dt
・データ入力 − 文章入力
最終フィールドまで上記を繰り返し
・TABでOKボタンに移動
・ENTERキー押下
・確認メッセージに自動応答 − ENTERキー
・最終レコードまで繰り返し
001 INIT 304 503 724 691 0,0,1,,0,
002 SHOW_MSG --概要説明フォーム表示 0 30 405 5850 6480 0,15335115,1,0,16711680,12,MS Pゴシック,False,False,False,False,
CSVファイルから連続入力
1レコード目から、最終レコード(10)までを連続入力。
本例では、フィールドの移動をマウスでは無く、キー(Tab)で行い、ボタンはEnterで実行する
レコードの読み込み
・CSV読込 コマンドでデータ読み込み
レコード数 → CsvRecordCnt
フィールド数→ CsvFieldCnt
・GetCsvData(コマンド型)でデータ取り出し
以降、Tabでフィールドを移動しながらデータを入力
00000
003 AP_Open 1000 0 444 133 1 408 83 716 375 サンプル\ダミーフォーム.exe
004 !
005 CSV読込 --CSVデータ読込 サンプル\入力用文言.csv
006 !
007 Set // カウンタ n
008 Set // データ Dt
009 !
010 ST For // 1〜4(レコード数)繰り返す n;1;%CsvRecordCnt%
011 !
012 LeftClick // 先頭フィールドに移動 449 124
013 !
014 GetCsvData --第1フィールド %Dt% %n% 1
015 文章入力 一括 %Dt%
016 !
017 Tab --第2 〒 100
018 GetCsvData %Dt% %n% 2
019 文章入力 一括 %Dt%
020 ! 200
021 Tab --第3 都道府県 100
022 GetCsvData %Dt% %n% 3
023 文章入力 一括 %Dt%
024 !
025 Tab --第4 市町村 100
026 GetCsvData %Dt% %n% 4
027 文章入力 一括 %Dt%
028 !
029 Tab --第5 住所 100
030 GetCsvData %Dt% %n% 5
031 文章入力 一括 %Dt%
032 !
033 Tab --第6 氏名 100
034 GetCsvData %Dt% %n% 6
035 文章入力 一括 %Dt%
036 !
037 Tab --「OK」ボタン 100
038 Enter 500
039 自動応答 --「OK」←確認メッセージ 2000 100 ダミーの入力です 入力完了 {enter}
040 !
041 Next-For // 次のレコード
042 !
043 Tab --「閉じる」ボタン
044 Enter
コードの使用方法
二重For 〜 Next-For を使ったCSVファイル処理 14.50版以降
For〜Next-For を二重(レコード数分ループの中にフィールド数分のループ)使用してCSVファイルからデータを読み込み、指定アプリのフィールドに入力します。
処理の流れ
出力用アプリ起動
変数定義
レコード数: GetCsvRecordCnt にて取得 → RecordCnt
フィールド数: GetCsvFieldCnt にて取得 → FieldCnt
レコード数分のループ カウンタ用変数 r ; 初期値(1) ; 最終値 レコード数(%RecordCnt%)
先頭フィールドに移動 LeftClick
フィールド数分のループ カウンタ用変数 f ; 初期値(1) ; 最終値 フィールド数(%FieldCnt%)
データの取得 GetCsvData( CSVファイル名 、レコード 、フィールド ) → Dt
データをアプリに出力 文章入力 %Dt%
フィールド数分繰り返す
レコード数分繰り返す
「閉じる」ボタンに移動 TABキー
「閉じる」ボタン押下 ENTERキー
001 INIT 304 503 724 691 0,0,1,,0,
002 !
003 ! For文の二重ループを使用して
004 ! レコード数分、およびフィールド数分入力
005 !
006 SHOW_MSG --概要説明フォーム表示 0 45 0 6135 6630 0,15335115,1,0,16711680,12,MS Pゴシック,False,False,False,False,
CSVファイルから連続入力
For文の二重ループを使用
それぞれのレコードについてフィールドデータを読み込み、指定アプリに入力
フィールドの移動タブキーで行い、Enterキーでボタン押下
CSV情報取得
・GetRecordCnt レコード数
・GetFieldCnt フィールド数
・GetCsvData CSVデータ
レコードループ
変数: 1〜%RecordCnt%
フィールドループ
変数: 1〜%FieldCnt%
以降、Tabでフィールドを移動しながらデータを入力
00000
007 AP_Open 1000 0 444 133 1 408 83 716 375 サンプル\ダミーフォーム.exe
008 !
009 Set // ファイルパス FilePath サンプル\入力用文言.csv
010 !
011 Set // レコード数 RecordCnt GetCsvRecordCnt(%FilePath%)
012 Set // フィールド数 FieldCnt GetCsvFieldCnt(%FilePath%)
013 Set // カウンタ−レコード r
014 Set // カウンタ−フィールド f
015 Set // データ格納 Dt
016 !
017 For // 1〜4(レコード数)繰り返す r;1;%RecordCnt%
018 !
019 LeftClick // 先頭フィールドに移動 449 124
020 !
021 For f;1;%FieldCnt%
022 Set --第1フィールド %Dt% Dt GetCsvData(%FilePath%,%r%,%f%)
023 文章入力 100 一括 %Dt%
024 Tab 100
025 Next-For
026 !
027 Enter 100
028 自動応答 --「OK」←確認メッセージ 2000 100 ダミーの入力です 入力完了 {enter}
029 !
030 Next-For // 次のレコード
031 !
032 Tab --「閉じる」ボタン
033 Enter 100
コードの使用方法
|
ランダム文字列生成 For 〜 Next-For 、 Do-While 〜 Wloop 、 Betw() 、 Chr() 14.52版以降
For 〜 Next-For 、Do-While 〜WLoop を使用してランダムな数字、文字を生成
数字の生成には、ランダム整数作成関数 Betw(最大値,(最小位置)) を使用
これにより、指定範囲の整数を作成できる。
大文字のみを生成するには、Betw()関数で
ランダムな数字 85〜90(ASCIIコードでA〜Z)を生成して、CHr()関数で文字に変換する。
ランダムな文字も同様に 33〜126(ASCIIコードで !〜 ~ )を生成して文字に変換
大文字または小文字の場合はコードが連続していないので、Do-While でループし、指定範囲のコード(65〜90、97〜122)の場合のみ文字とする。
数字、大文字、小文字の場合も同様、指定範囲のコード(48〜57、65〜90、97〜122)
補足
確率的には数千回の乱数でも指定範囲に収まらない可能性も、ほとんど無限小ながらある。
別個のカウンタを設け、最大試行回数を決めておけば確実!
実行に時間が掛かる(特に最初のランダムな数字)のは、マウスレコーダーのリスト行再表示のため。
最小化、またはタスクトレイに入れておけば高速になります。
001 INIT 9 218 591 782 0,0,1,600000,0,
002 ! 乱数発生
003 !
004 ! 指定桁の数字列、文字列を生成
005 !
006 Set // カウンタ n
007 Set // 乱数 r
008 Set // 生成文字 s
009 Set // 表示用 msg
010 Set // 桁数 keta 100
011 !
012 ! 指定桁の数字
013 !
014 Set // 初期化 s
015 For // 繰返し n ; 1 ; %keta%
016 Set // 0〜9の数字を生成&連結 s %s%Betw(9,0)
017 Next-For
018 SHOW_MSG // 表示 0 105 30 15075 2700 0,-2147483643,0,0,0,12,MS ゴシック,False,False,False,False, %keta%桁の数字を生成 %s%01101
019 !
020 ! 指定桁の文字 // A 〜 Z
021 !
022 Set // 初期化 s
023 For // 繰返し n ; 1 ; %keta%
024 Set // ASCIIコード 33〜90 を生成&連結 s %s%Chr(Betw(90,65))
025 Next-For
026 SHOW_MSG // 表示 0 105 240 14370 3435 0,-2147483643,0,0,0,12,MS ゴシック,False,False,False,False, %keta%桁のランダム文字を生成(A〜Z)%s%01101 027 !
028 ! 指定桁の文字 // ! 〜 ~
029 !
030 Set // 初期化 s
031 For // 繰返し n ; 1 ; %keta%
032 Set // ASCIIコード 33〜126 を生成&連結 s %s%Chr(Betw(126,33))
033 Next-For
034 SHOW_MSG // 表示 0 105 240 14370 3435 0,-2147483643,0,0,0,12,MS ゴシック,False,False,False,False, %keta%桁のランダム文字を生成 %s%01101
035 !
036 ! 指定桁の文字 // 大文字と小文字
037 !
038 Set // 初期化 n 1
039 Set // 初期化 s
040 Do-While // 繰返し %n% <= %keta%
041 Set // 33〜126 の乱数を生成 r Betw(126,33)
042 If // 範囲指定 ( (%r% >= 65) && (%r% <= 90 ) ) || ( (%r% >= 97) && (%r% <= 122 ) )
043 AddVar // カウンタ加算 %n% 1
044 Set // 生成文字連結 s %s%Chr(%r%)
045 End-If
046 WLoop
047 SHOW_MSG // 表示 0 105 240 14370 3435 0,-2147483643,0,0,0,12,MS ゴシック,False,False,False,False, %keta%桁のランダムな大/小文字を生成 %s%01101
048 !
049 !
050 ! 指定桁の文字 // 数字、大文字、小文字
051 !
052 Set // 初期化 n 1
053 Set // 初期化 s
054 Do-While // 繰返し %n% <= %keta%
055 Set // 33〜126 の乱数を生成 r Betw(126,33)
056 If // 範囲指定 ( (%r% >= 48) && (%r% <= 57 ) ) || ( (%r% >= 65) && (%r% <= 90 ) ) || ( (%r% >= 97) && (%r% <= 122 ) )
057 AddVar // カウンタ加算 %n% 1
058 Set // 生成文字連結 s %s%Chr(%r%)
059 End-If
060 WLoop
061 SHOW_MSG // 表示 0 105 240 14370 3435 0,-2147483643,0,0,0,12,MS ゴシック,False,False,False,False, %keta%桁のランダムな数字/大/小文字を生成 %s%01101
コードの使用方法
|