こんにちは。鈴木です。
前回に引き続き、【ボット構築初級編】としてボット構築の基礎知識や、
コマンドの紹介を連載でお届けいたします。
今回は、第5回目ということで、Excelコマンドの使い方をご紹介します。
Let's RPA!!
本記事はv11を使用した内容となっております。 A360(A2019)を使用した記事は以下をご参照ください。 【A2019】データソースを使う(Excel 編) 【A360】初めてのBot作成 vol.7 Excelの基本操作パッケージを使ってみよう! 【A360】初めてのBot作成 vol.8 Excelの高度な操作パッケージを使ってみよう! 【A360】【パッケージリファレンス】Excelの基本操作 vol.1 (開く/閉じる/1つのセルを取得/複数のセルを取得) 【A360】【パッケージリファレンス】Excelの基本操作 vol.2 (セルを設定/ブックを保存/検索/置換) 【A360】【パッケージリファレンス】Excelの基本操作 vol.3 (列名を取得/行番号を取得/セル アドレスを取得) 【A360】【パッケージリファレンス】Excelの基本操作 vol.4 (セルを削除/セルに移動/セッション変数を設定/シートに切り替え) |
□目次
※AAE Clientのバージョン:11.3.4.0
1.Excelコマンドの概要
RPAによる業務の自動化といえば、Excel操作!と言っても過言ではありません。
画面操作の自動化における入力データにもなりますので、
Excelコマンドを使えるようになると自動化の幅が大きく広がります。
Automation AnywhereでのExcelの操作について
ファイル操作、シート操作、セル操作、その他の4つに分類してご紹介します。
2.Excelコマンドの使い方
1.セッション名とは?
4つの分類をご紹介する前にセッション名について説明します。
Excelコマンドを使うときに必ず設定するセッション名とは何でしょうか?
簡単に言うと、Excelコマンドで取り扱っているファイル、データを識別する名前です。
Excelファイルとシート名で一意になるので、わかりやすい名前を付けるように心がけましょう!
2つの例を用いてもう少し詳しくご説明します。
例1は、1つExcelファイルを読み込んでメッセージボックスでデータを表示しています。
Defaultというセッション名でExcelを開いたり、データを読み込んだりしています。
1つのボットで1つしかExcelを扱わない場合は、セッション名はあまり気にすることはありません。
【例1のイメージ】
例2は、2つExcelファイルを読み込んでメッセージボックスでデータを表示しています。
それぞれのExcelファイルで、別のセッション名を設定しています。
1つのファイルで複数のシートを扱う場合もそれぞれ異なるセッション名が必要になります。
【例2のイメージ】
重複したセッション名を設定してしまったらどうしよう・・・。と悩まなくても大丈夫です!
セッション名が重複している場合は、保存ボタンをクリックした際に
下記のようなエラーダイアログが表示されます。
もし、表示されてしまったら重複しているセッション名を修正してください。
2.ファイル操作
1.Open Spreadsheet
Excelを操作したいなら、まずこのコマンドから始めましょう。
各項目の設定内容について説明します。
スプレッドシートのパス:Excelファイルのパスを設定します。
シート名の指定:操作するシート名を指定するか、しないかを設定できます。
指定する場合は、チェックボックスをチェックしてシート名を設定します。
指定しない場合は、アクティブシートが操作対象になります。
ヘッダーを含む:ファイル内の表形式のデータを読み込む際にヘッダが含まれている場合は、
チェックします。表の項目名の部分ですね。
アドインをロード:アドインを読み込む場合はチェックします。
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
【注意点!】
表形式のデータをヘッダありで読み込む場合、ヘッダ部分の項目名が重複していたり、
項目名が空白(空欄)であったりするとエラーが発生します。
そういった場合は、ヘッダなしを選択してください。
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
詳細ビューをクリックすると、ダイアログの右側にコマンドオプションが表示されます。
コマンドオプションを設定するのはどのようなときでしょうか?
下の画像にあるようにExcelにパスワードが設定されていたり、
編集モードで開くことが推奨されていたりする場合は、ダイアログが表示されます。
コマンドオプションを設定しておかないとダイアログに対する操作
(パスワードの入力や、ボタンのクリック)をObject Cloning等のコマンドで
自動化しないといけません。ちょっと面倒ですね。。。
設定しておけばダイアログが表示されず、いつも通りにExcelを開くことができます。
コマンドオプションの設定例を見てみましょう。
下の画像は、Excelを開く場合のパスワードを設定して、
読み取り専用のファイルを編集モードで開く場合の設定です。
2.Close Spreadsheet
別のボットを同じ環境で実行する際に邪魔になってしまうかもしれないので、
Excelを開いたら、必ず閉じるようにしましょう!
Open Spreadsheetよりも設定項目がシンプルですね。
セッション名:閉じたいExcelのセッション名を設定します。
保存しない:Excelファイルを閉じる際に保存するかを設定できます。
変更内容を保存する場合はチェックなし、保存しない場合はチェックありで設定します。
3.Save Spreadsheet
Close Spreadsheetと同様に設定項目がシンプルですね。
Excelを保存する場合に使用するコマンドです。
セッション名:保存したいExcelのセッション名を設定します。
3.シート操作
1.Activate Sheet
アクティブシートを変更するコマンドです。シート番号または、シート名でシートを選択します。
セッション名:アクティブシートを変更したいExcelのセッション名を設定します。
シート番号を指定:アクティブにするシート番号を設定します。
一番左のシートの番号が"1"で、以降の右のシートには連番がふられています。
シートを名前で指定:アクティブにするシート名を設定します。
4.セル操作
1.Get Cells
Excelからデータを取得するコマンドです。
取得方法が3種類あるのでそれぞれの特徴と設定内容を説明します。
①1つのセルを取得
指定したセルの値を取得して変数に格納するコマンドです。
アクティブなセル又は、設定したアドレスのセルから値を取得することができます。
セッション名:値を取得したいExcelのセッション名を設定します。
アクティブなセル:アクティブなセルから値を取得する場合、こちらのラジオボタンを選択します。
セルの指定:セルのアドレスを指定して値を取得したい場合は、こちらのラジオボタンを選択し、
A1形式でセルのアドレスを設定します。
下の画像は、A1セルの値を取得して、Prompt-Assignmentに格納するように設定しています。
②複数のセルを取得
取得する範囲を指定して複数のセルの値を取得することができます。
セッション名:値を取得したいExcelのセッション名を設定します。
特定のセルから:取得する範囲の開始セルのアドレスをA1形式で設定します。
特定のセルまで:取得する範囲の終了セルのアドレスをA1形式で設定します。
下の画像は、サンプルデータ①の表データ(C5からI15までのデータ)を取得する設定です。
【サンプルデータ①】
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
【長所と短所】
長所:範囲を指定するので、表データがシート上のどこにあっても取得することができます。
短所:範囲を指定するので、レコード数が増える表データを読み取る場合には注意が必要です。
指定した範囲を超えてレコードが増加すると読み取ることができません。
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
③全セルを取得
取得する範囲を指定せずに複数のセルの値を取得することができます。
A1からデータが設定されている一番右下のセルまでのデータを取得します。
セッション名:値を取得したいExcelのセッション名を設定します。
下の画像は、サンプルデータ②の表データを取得する設定です。
【サンプルデータ②】
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
【長所と短所】
長所:範囲を指定しないので、表データのレコード数が増えてもデータを取得することができます。
短所:範囲を指定しないので、A1から表データが始まっていないと、
項目名が空白(空欄)のデータを読み取ってしまい、エラーが発生することがあります。
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
2.Set Cell
Excelにデータを書き込むコマンドです。
セッション名:値を書き込みたいExcelのセッション名を設定します。
アクティブなセル:アクティブなセルに値を書き込みたい場合は、
こちらのラジオボタンを選択します。
セルの指定:値を書き込むセルを指定する場合は、こちらのラジオボタンを選択し、
A1形式でセルのアドレスを設定します。
セルの値:セルに書き込みたい値を設定します。
下の画像は、A11のセルに"Automation Anywhere"という文字列を書き込む場合の設定です。
下の画像のようにセルの指定で範囲(A1:A10)を指定し、セルの値に関数を設定してみます。
どのような結果になるでしょうか?
下の画像のように指定した範囲に関数を設定することができました。
3.Go to Cell
シート上のカーソルを移動(アクティブなセルを変更)するコマンドです。
セッション名:カーソルを移動したいExcelのセッション名を設定します。
セルの指定:カーソルの移動先のセルをアドレスで指定する場合、
セルの指定のラジオボタンを選択し、A1形式で設定します。
現在のカーソルの位置から1セルだけ移動したい場合は、
1つ左のセル、1つ右のセル、1つ上のセル、1つ下のセルのラジオボタンを選択します。
行の先頭、行の末尾、列の先頭、列の末尾を選択すると
カーソルはどのように移動するのでしょうか?サンプルデータ③で説明します!
D6のセルにカーソルがあった場合の移動は下の画像のように、
表データの端までカーソルが移動します。
【サンプルデータ③】
Set Cellと同じようにGo to Cellも範囲を指定してみました。
結果は、下の画像のように指定した範囲を選択した状態になりました。
Insert Keystrokesコマンドと組み合わせて表データをコピーできそうですね!
4.Delete Cells
指定したセルを削除するコマンドです。
セルの値を削除するのではなく、セル自体を削除します。
下の画像にある、セルを右クリックした際に表示される削除と同じ処理です。
セッション名:セルを削除したいExcelのセッション名を設定します。
アクティブなセル:アクティブなセルを削除する場合、こちらのラジオボタンを選択します。
セルの指定:削除するセルをアドレスで指定する場合、セルの指定のラジオボタンを選択し、
A1形式でセルのアドレスを設定します。
削除オプション:セルを削除する時のオプションを設定します。
Excelでセルを削除する場合に表示されるダイアログに対応しています。
5.Find/Replace
検索又は、置換を行うコマンドです。設定項目を見てみましょう!
From、Till:検索範囲を指定する項目です。
全セルを取得のように検索範囲を自動判定するような設定も可能ですし、
セルのアドレスで指定することも可能です。設定例は下の画像をご覧ください。
セッション名:検索又は置換を実行したいExcelのセッション名を設定します。
検索:検索対象の文字列を設定します。
検索オプション:Excelの検索オプションと対応しています。
セルのアドレスを割り当てる変数:検索対象の文字列のアドレスはList型の変数に格納されるので、
List型の変数を選択します。
置換する:置換する場合はチェックボックスをチェックして、置換文字列を設定します。
5.その他
1.Run Excel Macro
Excelに設定されているマクロを実行することができます!
セッション名:実行したいマクロが保存されているExcelのセッション名を設定します。
マクロ名:実行するマクロの名称を設定します。
マクロの引数:マクロに引数を渡す場合に設定します。
複数の引数を設定する場合は、カンマで区切って設定します。
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
【注意点!】
下の画像にあるように、マクロでダイアログなどを表示させてしまうと
OKボタンをクリックしない限りマクロの実行が完了せず、ボットの処理が先に進めません。
対話的なマクロの実行は避けるようにしましょう!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
3.Excelコマンドに関連するシステム変数
Excelコマンドを使う場合に必要になるシステム変数をご紹介します。
Excel Column:Get Cellsで表形式のデータを取得した時に、
Loopコマンドとこの変数を使用してデータを参照します。
詳しい説明はこちらをご覧ください。
Excel Cell:ヘッダありでExcelを開いて読み込んだ表データに対して、
項目名と行数を指定してセルのアドレスを取得します。
サンプルを作ってみましたので、下の画像をご確認ください。
Excel Cell Column:アクティブなセルの列のアドレスを取得します。
Excel Cell Row:アクティブなセルの行のアドレスを取得します。
サンプルを作ってみましたので、下の画像をご確認ください。
4.まとめ
Excel操作を制すものはRPAを制します。
セル操作は覚えることが多いですが、よく使うコマンドから覚えて頂ければと思います。
ExcelコマンドでCSVファイルを開くこともできますので、ぜひ使ってみて下さい!
著者紹介
先端技術推進統括部
RPAビジネス推進部
鈴木 陽介
C#によるシステム開発、POS開発を経てRPAエンジニアに。