- アプリを操作する
- ループのカウンタ
- Excelの範囲指定
- Current Window
- ウィンドウコマンドでアクティブなウィンドウを扱いたい
- ダイアログの操作
- ウィンドウ名の部分一致
- 動作が完了するまで待つ
- キーの入力書き方のコツ
- エラー関連
Excelやブラウザには専用のコマンドがありますが、そのほかのアプリには専用コマンドがありません。いくつか使えそうなコマンドをご紹介しますのでお試しください。
このサンプルの流れをご説明します。
- アプリを開くコマンド⇒プログラムープロセスコマンドのプロセスの開始
- アプリに入力するコマンド⇒入力コマンドーキーの入力
- アプリのボタンを押すコマンド⇒入力コマンドーアイテムのクリック
もしくはイメージコマンドー画像認識
もしくはウィンドウコマンドーウィンドウの移動でアプリの位置を調整した上で、
もしくはウィンドウコマンドーウィンドウの移動でアプリの位置を調整した上で、
入力コマンドーマウスの移動
ショートカットが使えるアプリの場合は、入力コマンドーキーの入力でショートカットを入力する方法もお試しください。
ループにおけるカウンタの使い方として、Excelの上から順番にデータを読み込むことが挙げられます。
サンプルスクリプト(一部省略しています。)
サンプルスクリプト(一部省略しています。)
|
- Excelを開始します。
- 既存のExcelを指定し、Excelを開きます。
- Excelでループさせる回数を決めるため、列を選んで最終行の行数をとっています。
(1行目はタイトル行とする)それを[最終行]という変数に格納します。 - ループの回数を指定します。式が使えるため、[最終行]-1をセットします。
(-の部分は最終行の数から何行分読み飛ばすかを書きます。仮に見出し行が2行あって、11行目までデータがある場合は、最終行では11をとってくるため、11-2で9件だけループをしてほしいことになります。そのため[最終行]-2をセットします。) - ExcelでA列のカウンタと同じ行にあるデータを取得します。そのため、カウンタは読み始めの行をセットします。2行目から読んでほしい場合は、初期値で2をセットしておきます。
すると一回目のループでA2のデータを読みに行きます。 - 取得したデータをもとに処理を行います。
- 処理が終わったらカウンタを次の行に行かせるため、カウンタに+1します。
すると、二回目のループではA3のデータを読みに行きます。 - ループの終わりです。
セルの範囲指定が可能なコマンドの表記方法は以下の通りです。
選択範囲 | 指定方法 |
A1セル | A1 |
A1セル~C2セル | A1:C2 |
A列 | A:A |
A~C列 | A:C |
3行目 | 3:3 |
3~5行目 | 3:5 |
A1セルとC1セル | A1,C1 |
入力コマンドーキーの入力では「Current Window」が選べます。
これは「現在アクティブになっているウィンドウ」を指します。複数のウィンドウを行き来すると、どれが操作対象のウィンドウかわかりにくくなります。そのような時にCurrent Windowで操作を指定すると、思ってもいなかったウィンドウが操作されてしまう可能性があります。「Current Window」を使う時は、予めウィンドウコマンドーウィンドウの選択でアクティブにしたいウィンドウを選択するなど、アクティブなウィンドウを意識しながらスクリプトを作成しましょう。
ウィンドウコマンドにはCurrent Windowがあり、選択できるように見えますが、実は使えません。指定するとエラーになります。もしウィンドウコマンドで現在アクティブなウィンドウを使いたい場合は、システム変数の「Env.ActiveWindowTitle」を使います。この変数内には現在アクティブなウィンドウのタイトルが格納されています。(この変数を呼び出すタイミングでアクティブなウィンドウ名が格納されます。)変数の挿入ボタンを押して、Env.ActiveWindowTitleを選択すると、Current Windowと同じように扱うことができます。
例えばExcelの「名前を付けて保存」画面のように、元となる画面からポップアップでダイアログが表示されることがあります。元となる画面のウィンドウ名を設定してもダイアログが動かない時は、「Current Window」を指定するとスムーズに動くことが多いのでお試しください。
マクロマンでは、通常動作の完了を待たずに次の処理に移りますので、処理がパソコンの動作を追い越してしまうことがよくあります。その場合は動作が完了するまで待つコマンドを適度に入れましょう。
また、これらのコマンドを入れても、動作が速すぎるケースがあるため、これらのコマンドの後に「その他のコマンドー一時停止」を入れて調節してください。- ウェブページが開くのを待つ
「Webブラウザコマンドー各種機能」で、要素のアクションを「要素の存在確認」を選択します。
タイムアウトまでの秒数を指定し、その秒数までの要素の検索パラメータで指定した要素が見つかれば次の処理に移り、見つからなければエラーとなります。 - ウィンドウ名が確認できるまで待つ
「ウィンドウコマンドー待機後に終了」は、指定するウィンドウ名が確認できるまで、指定時間の間待ってくれるコマンドです。指定した秒数までに指定ウィンドウ名が見つかれば次の処理に移り、見つからなければエラーとなります。 - ファイルが確認できるまで待つ
「ファイルコマンドーファイルの有無確認」は、指定するファイルパスにファイルが確認できるまで、指定時間の間待ってくれるコマンドです。指定した秒数までにファイルが見つかれば次の処理に移り、見つからなければエラーとなります。
- べた打ちで入力したひらがな・カタカナ・漢字・アルファベット・記号(一部除く)はそのまま入力される。
例:文字列欄「おはよう、そしてHello!」⇒入力内容「おはよう、そしてHello!」 - 変数を使うときは[変数名]。
例:変数名を「挨拶」にして、初期値「おはよう」をセット。
文字列欄「[挨拶]、そしてHello!」⇒入力内容「おはよう、そしてHello!」 - 特殊キーを使うときは{コード名}。
例:「コクー」と検索窓に入力した後にEnterを押して検索したい。
文字列欄「コクー{Enter}」
⇒入力内容「コクー」の入力後にEnterが押されます。
特殊キー | コード(半角) | 特殊キー | コード(半角) |
Alt | % | Ctrl | ^ |
Shift | + | Windowsキー | 送信不可 |
F1~F12 | {F1}~{F12} | +(プラスキー) | {+} |
-(マイナスキー) | -(半角のマイナス) | Space | (半角スペース) |
BackSpace | {BACKSPACE} {BS} {BKSP} |
Break | {BREAK} |
Caps Lock | {CAPSLOCK} | Delete |
{DELETE} {DEL} |
↓矢印キー | {DOWN} | ↑矢印キー | {UP} |
←矢印キー | {LEFT} | →矢印キー | {RIGHT} |
End | {END} | Enter | {ENTER} |
Esc | {ESC} | Help | {HELP} |
Home | {HOME} | Insert |
{INSERT} {INS} |
Num Lock | {NUMLOCK} | Page Down | {PGDN} |
Page Up | {PGUP} | Print Screen | {PRTSC} |
Scroll Lock | {SCROLLLOCK} | Tab | {TAB} |
F1~F12 | {F1}~{F12} | + | {+} |
( | {(} | ) | {)} |
{ | {{} | } | {}} |
% | {%} | ~ |
半角入力する必要があるが、大文字・小文字どちらでもOK。
- 同一特殊キーを複数回入力する際は、半角スペースと半角数字を付け加える。
例:Tabキーを5回押す⇒文字列欄「{TAB 5}」 - ショートカットキーで使用するCtrl・Alt・ShiftキーとSpaceキーには{}を付けない。
Ctrl:^ Alt:% Shift:+ Space:半角スペース いずれも半角。なおWindowsキーは使えない。 - ショートカットキーを入力する時は、組み合わせのアルファベットを小文字で入力する。
例:Ctrl+C(コピー)⇒文字列欄「^c」 Alt+F4⇒文字列欄「%{F4}」
エラーに関するコマンドについて
順次処理の場合
以下の様にコマンドを配置すると、エラー時の処理を実施することができます。
順次処理の場合
以下の様にコマンドを配置すると、エラー時の処理を実施することができます。
|
※Ifコマンドのエラー有無。ラインナンバーはエラーになるかどうか判別したいコマンドの行数
- エラー時の処理コマンドで、エラー判定したい個所を継続⇒停止でサンドイッチします。
- Ifコマンドのエラー有無でエラーがあった時となかった時とで処理を分けます。
繰り返し処理の場合
エラーになった場合ループを抜ける処理が入っているケースのみに使用してください。
エラーになってもループを抜けない場合は、一度該当行数でエラーになるとループしてもエラーフラグが立ったままとなり、1回目エラー⇒2回目正常になったとしてもIfコマンドのエラー有無でエラーの分岐になります。
Errorに関するシステム変数について
更新のタイミングですがIfコマンドのエラー有無が実行された時点で、更新されます。
つまりコマンドがエラーになっただけでは更新されません。