Automation Anywhereのv11シリーズでは、Excelのコマンドが10個用意されています。
ですが、正直言ってこれだけでは全然足りないですよね?
そこで、Automation Anywhere社がBotStoreに提供している、
Excel用のMetaBotを使うと、さらに色々な操作ができますので、ご紹介します。
つい最近更新されたようですので、最新版で確認した内容をお届けします。
Perform Various Spreadsheet Operations - Microsoft
https://botstore.automationanywhere.com/bot/excel-operations/
ダウンロードしたファイルは以前と異なり
「Perform Various Spreadsheet Operations-Automation Anywhere.msi」となりますが、
インストールされたMetaBotは以前と同じく「Metabot-ExcelDLL.mbot」になります。
BotStoreからの入手方法については、下記の記事をご参照ください。
Automation Anywhere - BotStore紹介(Change Date and Time Format)
※本記事はAutomation Anywhere Enterprise (RPA) v11.3.xについての内容になります。
目次
1. MetaBotのパラメータ設定時の注意点
2. 各ロジックの紹介
・ActivateSheet
・Change Font Style
・CloseExcelFile
・ColNo2ColRef
・ColRef2ColNo
・Copy - CTRL + A
・Copy Data
・Create New Sheet
・Delete Columns
・Delete Rows
・Delete Sheet
・Filter Data
・FindTextInExcel
・Get Total Records
・InsertNewRecords
・OpenOrActivateExcelFile
・OpenOrActiveTextFileInExcel
・PasteData
・RenameSheet
・SaveAsPDF
・SaveExistingOpenFile
・SelectData
3. ロジック一覧
4. まとめ
1. MetaBotのパラメータ設定時の注意点
MetaBotをワークベンチへ追加すると、ロジックを選択し、パラメータを設定する画面が表示されます。
この画面はちょっとクセがありますので、注意点をご紹介します。
初期表示では画面下が見切れている
画面解像度の設定にも依存するのかもしれませんが、開くと毎回画面の下部が見切れています。
見えない部分に[保存][キャンセル]ボタンがありますので、
毎回全画面表示に変更する必要があります。
Inパラメータに直接入力した場合は制限がある
MetaBotのInパラメータは直接値を指定することも、変数を指定することもできます。
ただし、そのパラメータが任意指定の項目であっても、設定画面でのNullはエラーになります。
また、半角スペース、全角スペースを指定することもできません。
こういった場合は、中身がNullな変数を指定するしかないということになります。
なので、直接と変数が混在するのもバグの原因になりそうですし、
基本的には変数指定にしておくのがよいかと思います。
Outパラメータの指定操作に違和感あり
MetaBotのパラメータ設定画面では、Inパラメータは欄の中にカーソルが表示されるのですが、
Outパラメータは何故かカーソルが表示されません。
また、Outパラメータには直接入力ができません。
かなり違和感がありますが、該当Outパラメータの[Value]欄をクリックしてからF2キーを押せば
いつもの変数指定ダイアログが表示されます。
2. 各ロジックの紹介
それでは各ロジックのご紹介をしていきたいと思います。
なお、BotStoreやインストーラーからReadMeファイルが入手できますが、
中身がかなりいい加減なので、惑わされないようご注意ください。
例えば、ReadMeファイルにある以下のロジックは実際には存在しません。
・ConvertOtherDelimitedTextFileToXlsx
・FilterWithTwoEqualsCriteria
逆にReadMeファイルに記載されていないロジックも複数存在します。
・CopyData2
・Create New Sheet
・Delete Columns
・Delete Rows
・Delete Sheet
・RenameSheet
・SaveExistingOpenFile
ロジック名が異なるものもあります。
またInputパラメータの一部は任意設定になっていますが、
逆に必須設定のパラメータをNullに設定してもエラーメッセージなどは表示されません。
基本的には何も起こらないという感じになります。
ActivateSheet
指定したExcelファイルの、指定したシートをアクティブにします。
Input Parameters
vInputFile:Excelファイルのフルパス
vSheetName:シート名
Output Parameters
(なし)
Change Font Style
指定したExcelファイルの、指定したシートの、指定した範囲の、フォントスタイルを変更します。
ReadMeファイルではVerticalAlignmentも変更できるような記載がありますが、
実際にはパラメータが存在しません。
Input Parameters
vInputFile:Excelファイルのフルパス
vSheetName:(任意)シート名。指定しない場合はアクティブシートを対象とする
vRange:(任意)セル範囲。
指定しない場合はアクティブなセル(複数選択されている場合はすべて)を対象とする
vFont:フォントの種類
vFontSize:フォントサイズ(数値)
vBold:太字(TRUE/FALSE)
vItalic:斜体(TRUE/FALSE)
vUnderLine:下線(TRUE/FALSE)
vHorizontaAlign:水平方向の配置(Left/Center/Right)
綴りが間違っていて「Horizontal」ではなく「Horizonta」になっているので注意!
Output Parameters
(なし)
実行すると、こんな感じになります。
CloseExcelFile
指定したExcelファイルを閉じます。
Input Parameters
vInputFile:Excelファイルのフルパス
vSave:ファイルを保存するかどうか(TRUE/FALSE)
Output Parameters
(なし)
ColNo2ColRef
指定したExcelファイルの指定した列番号の列名を取得します。
Excelだから、ファイルを指定する必要も無いような気がしますが、必須になってます。
Input Parameters
vInputFile:Excelファイルのフルパス
vColumnNumber:列番号(A列が1)
Output Parameters
vColumnName:取得した列名
実行すると、まだファイルを開いていない場合は、ファイルが開いてしまいます。
先に別の処理で開いていれば、あまり気にならないかと思いますが。
ColRef2ColNo
指定したExcelファイルの指定した列名の列番号を取得します。
Input Parameters
vInputFile:Excelファイルのフルパス
vColumnName:列名(Aなど。ユーザが設定した項目名ではない)
Output Parameters
vCol:取得した列番号
実行すると、以下のようになります。
Copy - CTRL + A
指定したExcelファイルの、指定したシートで、Ctrl + Aキーを押したときのように、
すべてのアクティブなセル範囲を選択します。
Input Parameters
vInputFile:Excelファイルのフルパス
vSheetName:(任意)シート名。指定しない場合はアクティブシートを対象とする
Output Parameters
(なし)
実行すると、以下のようになります。
Copy Data
指定したExcelファイルの、指定したシートの、指定した範囲をクリップボードにコピーします。
2月にアップデートされるまで正常に動作しなかったのですが、修正してもらえたようです。
Input Parameters
vInputFile:Excelファイルのフルパス
vSheetName:(任意)シート名。指定しない場合はアクティブシートを対象とする
vRange:(任意)セル範囲。
指定しない場合はアクティブなセル(複数選択されている場合はすべて)を対象とする
Output Parameters
(なし)
Create New Sheet
指定したExcelファイルの末尾に、指定した名称のシートを追加します。
Input Parameters
vInputFile:Excelファイルのフルパス
vSheetName:(任意)シート名。指定しない場合は自動連番で命名される
Output Parameters
(なし)
実行すると、以下のようになります。
Delete Columns
指定したExcelファイルの、指定したシートの、指定した列を削除します。
「H1:H2」のように列の一部を指定しても、列全体が削除されます。
「1:4」のように列がわからないような指定をすると、未指定と同じ挙動となります。
Input Parameters
vInputFile:Excelファイルのフルパス
vSheetName:(任意)シート名。指定しない場合はアクティブシートを対象とする
vRange:(任意)セル範囲。
指定しない場合はアクティブなセル(複数選択されている場合はすべて)を対象とする
Output Parameters
(なし)
実行すると、以下のようになります。
Delete Rows
指定したExcelファイルの、指定したシートの、指定した行を削除します。
「A2:C3」のように列の一部を指定しても、列全体が削除されます。
「A:C」のように行がわからないような指定をすると、未指定と同じ挙動となります。
Input Parameters
vInputFile:Excelファイルのフルパス
vSheetName:(任意)シート名。指定しない場合はアクティブシートを対象とする
vRange:(任意)セル範囲。
指定しない場合はアクティブなセル(複数選択されている場合はすべて)を対象とする
Output Parameters
(なし)
実行すると、以下のようになります。
Delete Sheet
指定したExcelファイルの、指定したシートを削除します。
Input Parameters
vInputFile:Excelファイルのフルパス
vSheetName:シート名
Output Parameters
(なし)
Filter Data
指定したExcelファイルの、指定したシートの、指定した範囲にフィルターを設定し、
指定した条件でフィルタリングします。
範囲は「A1:J10」のように開始列行、終了列行を指定しないとダメなようです。
Input Parameters
vInputFile:Excelファイルのフルパス
vSheetName:(任意)シート名。指定しない場合はアクティブシートを対象とする
vRange:(任意)セル範囲。
指定しない場合はアクティブなセル(複数選択されている場合はすべて)を対象とする
vFilterApplyByColName:列名でフィルタしたい場合はTRUE
テーブルのヘッダ名でフィルタしたい場合はFALSE
vFilerByCol:列名(Aなど)
またはヘッダ名(ユーザが設定した項目名)
綴りが間違っていて「Filter」ではなく「Filer」になっているので注意!
vFilterValue:フィルタしたい値
Output Parameters
(なし)
実行すると、以下のようになります。
(vFilterApplyByColName=TRUE、vFilerByColumn=C、vFilterValue=ccc)
FindTextInExcel
指定したExcelファイルの、指定したシートで、指定した値を検索し、
存在したセルアドレスを取得します。
Input Parameters
vInputFile:Excelファイルのフルパス
vSheetName:(任意)シート名。指定しない場合はファイル全体を対象とする
vTextSearch:検索したい値
Output Parameters
vOutput:指定した値が存在したセルアドレス。複数ある場合は半角カンマでつなぐ
実行すると、以下のようになります。
Get Total Records
指定したExcelファイルの、指定したシートで、データがある最後の行を取得します。
Input Parameters
vInputFile:Excelファイルのフルパス
vSheetName:(任意)シート名。指定しない場合はアクティブシートを対象とする
Output Parameters
vTotalRecords:データがある最後の行
実行すると、以下のようになります。
データが入力されたセルが1つも無いシートを指定してしまうと、
以下のようなエラーになります。
InsertNewRecords
指定したExcelファイルの、アクティブシートの、指定した位置に行を挿入します。
シートが指定できませんので、先に「ActivateSheet」Logicなどで
対象のシートをアクティブにしておく必要があります。
Input Parameters
vInputFile:Excelファイルのフルパス
vRowNumber:行を挿入する位置
Output Parameters
(なし)
実行すると、以下のようになります。
OpenOrActivateExcelFile
指定したExcelファイルを開きます。
ReadMeにはすでに開かれている場合はアクティブにすると書いてありますが、
どうやらこちらは正常に動作しないようです。
Input Parameters
vInputFile:Excelファイルのフルパス
Output Parameters
(なし)
OpenOrActiveTextFileInExcel
指定したテキストファイルをExcelで開きます。
こちらもReadMeにはすでに開かれている場合はアクティブにすると書いてありますが、
正常に動作しないようです。
半角カンマ区切りのCSVファイルだけでなく、Tab区切りのTXTファイルも開けます。
Tab区切りの場合は、Variable Operationコマンドで、
区切り文字指定用の変数に、テキストエディタなどからコピーした
Tab文字を貼り付けて保存すればOKです。
Input Parameters
vInputFile:テキストファイルのフルパス
vDelimeter:区切り文字
綴りが間違っていて「Delimiter」ではなく「Delimeter」になっているので注意!
Output Parameters
(なし)
PasteData
コピーしたデータを指定したExcelファイルの、指定したシートの、指定した範囲に貼り付けます。
vPasteByValueにTRUEを指定すれば値のみ貼り付け、
FALSEを指定すれば書式も含めて貼り付けされます。
コピーした範囲より小さい範囲を貼り付けに指定しても、無視してすべて貼り付けます。
コピーした範囲より大きい範囲を貼り付けに指定した場合は、
コピーしたのが複数セルの場合は、コピーしたデータだけを貼り付けます。
コピーしたのが1セルの場合は、指定した範囲すべてにデータだけを貼り付けます。
Input Parameters
vInputFile:Excelファイルのフルパス
vSheetName:(任意)シート名。指定しない場合はアクティブシートを対象とする
vRange:(任意)セル範囲。
指定しない場合はアクティブなセル(複数選択されている場合はすべて)を対象とする
vPasteByValue:(任意)貼り付けの形式。値のみならTRUE、書式も含むならFALSE、
指定しない場合はTRUE
Output Parameters
(なし)
RenameSheet
指定したExcelファイルの、指定したシートの名称を変更します。
対象のシートはアクティブにはなりません。
Input Parameters
vInputFile:Excelファイルのフルパス
vOldSheetName:変更前のシート名
vNewSheetName:変更後のシート名
Output Parameters
(なし)
SaveAsPDF
指定したExcelファイルをPDF形式で保存します。
保存されるのはアクティブシートだけです。
このロジックでも実行すると、ファイルを開いていない場合は、一度ファイルが開いて
その後自動的に閉じられます。
すでに同名のPDFファイルが存在している場合は、何も言わずに上書き保存します。
Input Parameters
vInputFile:Excelファイルのフルパス
vPDFFileName:保存するPDFファイルのフルパス
Output Parameters
(なし)
SaveExistingOpenFile
現在開いているExcelファイルを保存します。
閉じているファイルに対して実行しても何も起きません。
保存して閉じたい場合は「CloseExcelFile」を使って、
まだ閉じないけど、いったん保存したい場合はこちらを使うという感じでしょうか。
Input Parameters
vInputFile:Excelファイルのフルパス
Output Parameters
(なし)
SelectData
指定したExcelファイルの、指定したシートの、指定した範囲を選択状態にします。
Input Parameters
vInputFile:Excelファイルのフルパス
vSheetName:(任意)シート名。指定しない場合はアクティブシートを対象とする
vRange:(任意)セル範囲。
指定しない場合はアクティブなセル(複数選択されている場合はすべて)を対象とする
Output Parameters
(なし)
実行すると、以下のようになります。
3. ロジック一覧
22個のロジックが利用できます。以下にまとめます。
# | Logic | 用途 | Input Parameters | Output Parameters |
1 | ActivateSheet | 指定したExcelファイルの、指定したシートをアクティブにします。 | vInputFile:Excelファイルのフルパス vSheetName:シート名 |
(なし) |
2 | Change Font Style | 指定したExcelファイルの、指定したシートの、指定した範囲の、フォントスタイルを変更します。 | vInputFile:Excelファイルのフルパス vSheetName:(任意)シート名 指定しない場合はアクティブシートを対象とする vRange:(任意)セル範囲 指定しない場合はアクティブなセル(複数選択されている場合はすべて)を対象とする vFont:フォントの種類 vFontSize:フォントサイズ(数値) vBold:太字(TRUE/FALSE) vItalic:斜体(TRUE/FALSE) vUnderLine:下線(TRUE/FALSE) vHorizontaAlign:水平方向の配置(Left/Center/Right) |
(なし) |
3 | CloseExcelFile | 指定したExcelファイルを閉じます。 | vInputFile:Excelファイルのフルパス vSave:ファイルを保存するかどうか(TRUE/FALSE) |
(なし) |
4 | ColNo2ColRef | 指定したExcelファイルの指定した列番号の列名を取得します。 | vInputFile:Excelファイルのフルパス vColumnNumber:列番号(A列が1) |
vColumnName:取得した列名 |
5 | ColRef2ColNo | 指定したExcelファイルの指定した列名の列番号を取得します。 | vInputFile:Excelファイルのフルパス vColumnName:列名(Aなど、ユーザが設定した項目名ではない) |
vCol:取得した列番号 |
6 | Copy - CTRL + A | 指定したExcelファイルの、指定したシートで、Ctrl + Aキーを押したときのように、すべてのアクティブなセル範囲を選択します。 | vInputFile:Excelファイルのフルパス vSheetName:(任意)シート名 指定しない場合はアクティブシートを対象とする |
(なし) |
7 | Copy Data | 指定したExcelファイルの、指定したシートの、指定した範囲をクリップボードにコピーします。 | vInputFile:Excelファイルのフルパス vSheetName:(任意)シート名 指定しない場合はアクティブシートを対象とする vRange:(任意)セル範囲 指定しない場合はアクティブなセル(複数選択されている場合はすべて)を対象とする |
(なし) |
8 | Create New Sheet | 指定したExcelファイルの末尾に、指定した名称のシートを追加します。 | vInputFile:Excelファイルのフルパス vSheetName:(任意)シート名 指定しない場合は自動連番で命名される |
(なし) |
9 | Delete Columns | 指定したExcelファイルの、指定したシートの、指定した列を削除します。 | vInputFile:Excelファイルのフルパス vSheetName:(任意)シート名 指定しない場合はアクティブシートを対象とする vRange:(任意)セル範囲 指定しない場合はアクティブなセル(複数選択されている場合はすべて)を対象とする |
(なし) |
10 | Delete Rows | 指定したExcelファイルの、指定したシートの、指定した行を削除します。 | vInputFile:Excelファイルのフルパス vSheetName:(任意)シート名 指定しない場合はアクティブシートを対象とする vRange:(任意)セル範囲 指定しない場合はアクティブなセル(複数選択されている場合はすべて)を対象とする |
(なし) |
11 | Delete Sheet | 指定したExcelファイルの、指定したシートを削除します。 | vInputFile:Excelファイルのフルパス vSheetName:シート名 |
(なし) |
12 | Filter Data | 指定したExcelファイルの、指定したシートの、指定した範囲にフィルターを設定し、指定した条件でフィルタリングします。 | vInputFile:Excelファイルのフルパス vSheetName:(任意)シート名 指定しない場合はアクティブシートを対象とする vRange:(任意)セル範囲 指定しない場合はアクティブなセル(複数選択されている場合はすべて)を対象とする vFilterApplyByColName:列名でフィルタしたい場合はTRUE テーブルのヘッダ名でフィルタしたい場合はFALSE vFilerByCol:列名(Aなど) またはヘッダ名(ユーザが設定した項目名) vFilterValue:フィルタしたい値 |
(なし) |
13 | FindTextInExcel | 指定したExcelファイルの、指定したシートで、指定した値を検索し、存在したセルアドレスを取得します。 | vInputFile:Excelファイルのフルパス vSheetName:(任意)シート名 指定しない場合はファイル全体を対象とする vTextSearch:検索したい値 |
vOutput:指定した値が存在したセルアドレス 複数ある場合は半角カンマでつなぐ |
14 | Get Total Records | 指定したExcelファイルの、指定したシートで、データがある最後の行を取得します。 | vInputFile:Excelファイルのフルパス vSheetName:(任意)シート名 指定しない場合はアクティブシートを対象とする |
vTotalRecords:データがある最後の行 |
15 | InsertNewRecords | 指定したExcelファイルの、アクティブシートの、指定した位置に行を挿入します。 | vInputFile:Excelファイルのフルパス vRowNumber:行を挿入する位置 |
(なし) |
16 | OpenOrActivate ExcelFile |
指定したExcelファイルを開きます。 | vInputFile:Excelファイルのフルパス | (なし) |
17 | OpenOrActive TextFileInExcel |
指定したテキストファイルをExcelで開きます。 | vInputFile:テキストファイルのフルパス vDelimeter:区切り文字 |
(なし) |
18 | PasteData | コピーしたデータを指定したExcelファイルの、指定したシートの、指定した範囲に貼り付けます。 | vInputFile:Excelファイルのフルパス vSheetName:(任意)シート名 指定しない場合はアクティブシートを対象とする vRange:(任意)セル範囲 指定しない場合はアクティブなセル(複数選択されている場合はすべて)を対象とする vPasteByValue:(任意)貼り付けの形式 値のみならTRUE、書式も含むならFALSE、指定しない場合はTRUE |
(なし) |
19 | RenameSheet | 指定したExcelファイルの、指定したシートの名称を変更します。 | vInputFile:Excelファイルのフルパス vOldSheetName:変更前のシート名 vNewSheetName:変更後のシート名 |
(なし) |
20 | SaveAsPDF | 指定したExcelファイルをPDF形式で保存します。 | vInputFile:Excelファイルのフルパス vPDFFileName:保存するPDFファイルのフルパス |
(なし) |
21 | SaveExisting OpenFile |
現在開いているExcelファイルを保存します。 | vInputFile:Excelファイルのフルパス | (なし) |
22 | SelectData | 指定したExcelファイルの、指定したシートの、指定した範囲を選択状態にします。 | vInputFile:Excelファイルのフルパス vSheetName:(任意)シート名 指定しない場合はアクティブシートを対象とする vRange:(任意)セル範囲 指定しない場合はアクティブなセル(複数選択されている場合はすべて)を対象とする |
(なし) |
4. まとめ
A2019ではExcelのアクションがかなり強化されていますが、
まだまだv11を使い続ける方もいらっしゃるでしょうから、
既存のものを使って少しでも効率良くBot作成していただければと思います。
なおMetaBotを使用するには、ユーザーの役割に応じて、
Control Roomの「My MetaBots」フォルダへの権限設定が必要です。
アップロード、ダウンロード、Bot実行などについて、適切に設定されていないと
何かしようとしたときにエラーになりますので、ご注意ください。
著者紹介
先端技術推進統括部
RPAビジネス推進部
西尾 玲