●TIPS

TIPS

TIPS一覧

アプリを操作する

Excelやブラウザには専用のコマンドがありますが、そのほかのアプリには専用コマンドがありません。いくつか使えそうなコマンドをご紹介しますのでお試しください。

①アプリを開くコマンド⇒プログラムープロセスコマンドのプロセスの開始
②アプリに入力するコマンド⇒入力コマンドーキーの入力
③アプリのボタンを押すコマンド⇒入力コマンドーアイテムのクリック
もしくはイメージコマンドー画像認識
もしくはウィンドウコマンドーウィンドウの移動でアプリの位置を調整した上で、
入力コマンドーマウスの移動

ショートカットが使えるアプリの場合は、入力コマンドーキーの入力でショートカットを入力する方法もお試しください。

ループのカウンタ

ループにおけるカウンタの使い方として、Excelの上から順番にデータを読み込むことが挙げられます。

サンプルスクリプト(一部省略しています。)
1:Excelの開始[~]
2:ブックを開く[~]
3:最終行をゲット[Apply to '最終行',~]
4: Loop[最終行]-1 Times(回数指定のループ)
5:  セルの値をゲット[Get Value from'A[カウンタ]' ~]
6:  ~処理~
7:  変数の設定[Apply'[カウンタ]+1' to Variable 'カウンタ']
8: End Loop

このサンプルの流れをご説明します。
1:Excelを開始します。
2:既存のExcelを指定し、Excelを開きます。
3:Excelでループさせる回数を決めるため、列を選んで最終行の行数をとっています。
(1行目はタイトル行とする)それを[最終行]という変数に格納します。
4:ループの回数を指定します。式が使えるため、[最終行]-1をセットします。
(-の部分は最終行の数から何行分読み飛ばすかを書きます。仮に見出し行が2行あって、11行目までデータがある場合は、最終行では11をとってくるため、11-2で9件だけループをしてほしいことになります。そのため[最終行]-2をセットします。)
5:ExcelでA列のカウンタと同じ行にあるデータを取得します。そのため、カウンタは読み始めの行をセットします。2行目から読んでほしい場合は、初期値で2をセットしておきます。すると一回目のループでA2のデータを読みに行きます。
6:取得したデータをもとに処理を行います。
7:処理が終わったらカウンタを次の行に行かせるため、カウンタに+1します。
すると、二回目のループではA3のデータを読みに行きます。
8:ループの終わりです。

このようにカウンタを用いると同じ列内で行をかえて処理を行うことができます。

Excelの範囲指定

セルの範囲指定が可能なコマンドの表記方法は以下の通りです。
 
選択範囲 指定方法
A1セル A1
A1セル~C2セル A1:C2
A列 A:A
A~C列 A:C
3行目 3:3
3~5行目 3:5
A1セルとC1セル A1,C1

対象コマンド:Excelコマンド- セルの移動セルに値をセットセルの削除

Current Window

入力コマンドーキーの入力では「Current Window」が選べます。これは「現在アクティブになっているウィンドウ」を指します。複数のウィンドウを行き来すると、どれが操作対象のウィンドウかわかりにくくなります。そのような時にCurrent Windowで操作を指定すると、思ってもいなかったウィンドウが操作されてしまう可能性があります。「Current Window」を使うときは、予めウィンドウコマンドーウィンドウの選択でアクティブにしたいウィンドウを選択するなど、アクティブなウィンドウを意識しながらスクリプトを作成しましょう。

ウィンドウコマンドでアクティブなウィンドウを扱いたい

ウィンドウコマンドにはCurrent Windowがあり、選択できるように見えますが、実は使えません。指定するとエラーになります。もしウィンドウコマンドで現在アクティブなウィンドウを使いたい場合は、システム変数の「Env.ActiveWindowTitle」を使います。この変数内には現在アクティブなウィンドウのタイトルが格納されています。(この変数を呼び出すタイミングでアクティブなウィンドウ名が格納されます。)変数の挿入ボタンを押して、Env.ActiveWindowTitleを選択すると、Current Windowと同じように扱うことができます。

ダイアログの操作

例えばExcelの「名前を付けて保存」画面のように、元となる画面からポップアップでダイアログが表示されることがあります。元となる画面のウィンドウ名を設定してもダイアログが動かない時は、「Current Window」を指定するとスムーズに動くことが多いのでお試しください。

ウィンドウ名の部分一致

ウィンドウ名を選択するコマンドの中に、ウィンドウ名の部分一致に対応しているものがあります。例えばウィンドウ名が「無題ーメモ帳」の場合は、「無題」だけでも、「メモ帳」だけでもOKです。ただし他に一致するウィンドウ名があれば、そちらが選択されることもあります。ウィンドウ名がかわってしまうケースなどは部分一致をうまく使うとよいでしょう。

対象コマンド:
・ウィンドウコマンド全て
・入力コマンドーキーの入力
・イメージコマンドースクリーンショットの取得

動作が完了するまで待つ

マクロマンでは、通常動作の完了を待たずに次の処理に移りますので、処理がパソコンの動作を追い越してしまうことがよくあります。その場合は動作が完了するまで待つコマンドを適度に入れましょう。また、これらのコマンドをいれても、動作が速すぎるケースがあるため、これらのコマンドの後に「その他のコマンドー一時停止」を入れて調節してください。

①ウェブページが開くのを待つ
「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キーは使えない。


6:ショートカットキーを入力する時は、組み合わせのアルファベットを小文字で入力する。
例:Ctrl+C(コピー)⇒文字列欄「^c」 Alt+F4⇒文字列欄「%{F4}」  

エラー関連

エラーに関するコマンドについて
■順次処理の場合
以下の様にコマンドを配置すると、エラー時の処理を実施することができます。
1 エラー時の処理[Action:処理を継続]
2 エラーになるかどうかを判別したいコマンド
3   If (Error Occured on Line Number 2 )※
4    エラー処理
5   Else
6    正常処理
7   End If
8 エラー時の処理[Action:処理を停止]

 ※Ifコマンドのエラー有無。ラインナンバーはエラーになるかどうか判別したいコマンドの行数
①エラー時の処理コマンドで、エラー判定したい個所を継続⇒停止でサンドイッチします。
②Ifコマンドのエラー有無でエラーがあったときとなかった時とで処理を分けます。

■繰り返し処理の場合
エラーになった場合ループを抜ける処理が入っているケースのみに使用してください。
エラーになってもループを抜けない場合は、一度該当行数でエラーになるとループしてもエラーフラグが立ったままとなり、
1回目エラー⇒二回目正常になったとしてもIfコマンドのエラー有無でエラーの分岐になります。

■Errorに関するシステム変数について
更新のタイミングですがIfコマンドのエラー有無が実行された時点で、更新されます。
つまりコマンドがエラーになっただけでは更新されません。