SB C&Sの最新技術情報 発信サイト

C&S ENGINEER VOICE

SB C&S

Automation Anywhere - BotStore紹介(Perform Various Spreadsheet Operations - Microsoft)

RPA
2020.03.31

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をワークベンチへ追加すると、ロジックを選択し、パラメータを設定する画面が表示されます。
この画面はちょっとクセがありますので、注意点をご紹介します。

初期表示では画面下が見切れている

画面解像度の設定にも依存するのかもしれませんが、開くと毎回画面の下部が見切れています。
見えない部分に[保存][キャンセル]ボタンがありますので、
毎回全画面表示に変更する必要があります。

MetaBotDefaultView.png

MetaBotFullScreen.png

Inパラメータに直接入力した場合は制限がある

MetaBotのInパラメータは直接値を指定することも、変数を指定することもできます。

MetaBotParameter.png

ただし、そのパラメータが任意指定の項目であっても、設定画面でのNullはエラーになります。
また、半角スペース、全角スペースを指定することもできません。

MetaBotParameterNullError.png

こういった場合は、中身がNullな変数を指定するしかないということになります。
なので、直接と変数が混在するのもバグの原因になりそうですし、
基本的には変数指定にしておくのがよいかと思います。

Outパラメータの指定操作に違和感あり

MetaBotのパラメータ設定画面では、Inパラメータは欄の中にカーソルが表示されるのですが、
Outパラメータは何故かカーソルが表示されません。
また、Outパラメータには直接入力ができません。
かなり違和感がありますが、該当Outパラメータの[Value]欄をクリックしてからF2キーを押せば
いつもの変数指定ダイアログが表示されます。

MetaBotInParameter.png

 


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
  (なし)

ActivateSheetList.png

ActivateSheetParam.png

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
  (なし)

ChangeFontStyleList.png

ChangeFontStyleParam.png

実行すると、こんな感じになります。

ChangeFontStyleResult.png

CloseExcelFile

指定したExcelファイルを閉じます。

Input Parameters
  vInputFile:Excelファイルのフルパス
  vSave:ファイルを保存するかどうか(TRUE/FALSE)

Output Parameters
  (なし)

CloseExcelFileList.png

CloseExcelFileParam.png

ColNo2ColRef

指定したExcelファイルの指定した列番号の列名を取得します。
Excelだから、ファイルを指定する必要も無いような気がしますが、必須になってます。

Input Parameters
  vInputFile:Excelファイルのフルパス
  vColumnNumber:列番号(A列が1)

Output Parameters
  vColumnName:取得した列名

ColNo2ColRefList.png

ColNo2ColRefParam.png

実行すると、まだファイルを開いていない場合は、ファイルが開いてしまいます。
先に別の処理で開いていれば、あまり気にならないかと思いますが。

ColNo2ColRefResult.png

ColRef2ColNo

指定したExcelファイルの指定した列名の列番号を取得します。

Input Parameters
  vInputFile:Excelファイルのフルパス
  vColumnName:列名(Aなど。ユーザが設定した項目名ではない)

Output Parameters
  vCol:取得した列番号

ColRef2ColNoList.png

ColRef2ColNoParam.png

実行すると、以下のようになります。

ColRef2ColNoResult.png

Copy - CTRL + A

指定したExcelファイルの、指定したシートで、Ctrl + Aキーを押したときのように、
すべてのアクティブなセル範囲を選択します。

Input Parameters
  vInputFile:Excelファイルのフルパス
  vSheetName:(任意)シート名。指定しない場合はアクティブシートを対象とする

Output Parameters
  (なし)

Copy-CTRL+A_List.png

Copy-CTRL+A_Param.png

実行すると、以下のようになります。

Copy-CTRL+A_Result.png

Copy Data

指定したExcelファイルの、指定したシートの、指定した範囲をクリップボードにコピーします。
2月にアップデートされるまで正常に動作しなかったのですが、修正してもらえたようです。

Input Parameters
  vInputFile:Excelファイルのフルパス
  vSheetName:(任意)シート名。指定しない場合はアクティブシートを対象とする
  vRange:(任意)セル範囲。
      指定しない場合はアクティブなセル(複数選択されている場合はすべて)を対象とする

Output Parameters
  (なし)

CopyDataList.png

CopyDataParam.png

Create New Sheet

指定したExcelファイルの末尾に、指定した名称のシートを追加します。

Input Parameters
  vInputFile:Excelファイルのフルパス
  vSheetName:(任意)シート名。指定しない場合は自動連番で命名される

Output Parameters
  (なし)

CreateNewSheetList.png

CreateNewSheetParam.png

実行すると、以下のようになります。

CreateNewSheetResult.png

Delete Columns

指定したExcelファイルの、指定したシートの、指定した列を削除します。
「H1:H2」のように列の一部を指定しても、列全体が削除されます。
「1:4」のように列がわからないような指定をすると、未指定と同じ挙動となります。

Input Parameters
  vInputFile:Excelファイルのフルパス
  vSheetName:(任意)シート名。指定しない場合はアクティブシートを対象とする
  vRange:(任意)セル範囲。
      指定しない場合はアクティブなセル(複数選択されている場合はすべて)を対象とする

Output Parameters
  (なし)

DeleteColumnsList.png

DeleteColumnsParam.png

実行すると、以下のようになります。

DeleteColumnsResult.png

Delete Rows

指定したExcelファイルの、指定したシートの、指定した行を削除します。
「A2:C3」のように列の一部を指定しても、列全体が削除されます。
「A:C」のように行がわからないような指定をすると、未指定と同じ挙動となります。

Input Parameters
  vInputFile:Excelファイルのフルパス
  vSheetName:(任意)シート名。指定しない場合はアクティブシートを対象とする
  vRange:(任意)セル範囲。
      指定しない場合はアクティブなセル(複数選択されている場合はすべて)を対象とする

Output Parameters
  (なし)

DeleteRowsList.png

DeleteRowsParam.png

実行すると、以下のようになります。

DeleteRowsResult.png

Delete Sheet

指定したExcelファイルの、指定したシートを削除します。

Input Parameters
  vInputFile:Excelファイルのフルパス
  vSheetName:シート名

Output Parameters
  (なし)

DeleteSheetList.png

DeleteSheetParam.png

Filter Data

指定したExcelファイルの、指定したシートの、指定した範囲にフィルターを設定し、
指定した条件でフィルタリングします。
範囲は「A1:J10」のように開始列行、終了列行を指定しないとダメなようです。

Input Parameters
  vInputFile:Excelファイルのフルパス
  vSheetName:(任意)シート名。指定しない場合はアクティブシートを対象とする
  vRange:(任意)セル範囲。
      指定しない場合はアクティブなセル(複数選択されている場合はすべて)を対象とする
  vFilterApplyByColName:列名でフィルタしたい場合はTRUE
      テーブルのヘッダ名でフィルタしたい場合はFALSE
  vFilerByCol:列名(Aなど)
      またはヘッダ名(ユーザが設定した項目名)
      綴りが間違っていて「Filter」ではなく「Filer」になっているので注意!
  vFilterValue:フィルタしたい値

Output Parameters
  (なし)

FilterDataList.png

FilterDataParam.png

実行すると、以下のようになります。
(vFilterApplyByColName=TRUE、vFilerByColumn=C、vFilterValue=ccc)

FilterDataResult1.png

FindTextInExcel

指定したExcelファイルの、指定したシートで、指定した値を検索し、
存在したセルアドレスを取得します。

Input Parameters
  vInputFile:Excelファイルのフルパス
  vSheetName:(任意)シート名。指定しない場合はファイル全体を対象とする
  vTextSearch:検索したい値

Output Parameters
  vOutput:指定した値が存在したセルアドレス。複数ある場合は半角カンマでつなぐ

FindTextInExcelList.png

FindTextInExcelParam.png

実行すると、以下のようになります。

FindTextInExcelResult.png

Get Total Records

指定したExcelファイルの、指定したシートで、データがある最後の行を取得します。

Input Parameters
  vInputFile:Excelファイルのフルパス
  vSheetName:(任意)シート名。指定しない場合はアクティブシートを対象とする

Output Parameters
  vTotalRecords:データがある最後の行

GetTotalRecordsList.png

GetTotalRecordsParam.png

実行すると、以下のようになります。

GetTotalRecordsResult.png

データが入力されたセルが1つも無いシートを指定してしまうと、
以下のようなエラーになります。

GetTotalRecordsError.png

InsertNewRecords

指定したExcelファイルの、アクティブシートの、指定した位置に行を挿入します。
シートが指定できませんので、先に「ActivateSheet」Logicなどで
対象のシートをアクティブにしておく必要があります。

Input Parameters
  vInputFile:Excelファイルのフルパス
  vRowNumber:行を挿入する位置

Output Parameters
  (なし)

InsertNewRecordsList.png

InsertNewRecordsParam.png

実行すると、以下のようになります。

InsertNewRecordsResult.png

OpenOrActivateExcelFile

指定したExcelファイルを開きます。
ReadMeにはすでに開かれている場合はアクティブにすると書いてありますが、
どうやらこちらは正常に動作しないようです。

Input Parameters
  vInputFile:Excelファイルのフルパス

Output Parameters
  (なし)

OpenOrActivateExcelFileList.png

OpenOrActivateExcelFileParam.png

OpenOrActiveTextFileInExcel

指定したテキストファイルをExcelで開きます。
こちらもReadMeにはすでに開かれている場合はアクティブにすると書いてありますが、
正常に動作しないようです。

半角カンマ区切りのCSVファイルだけでなく、Tab区切りのTXTファイルも開けます。
Tab区切りの場合は、Variable Operationコマンドで、
区切り文字指定用の変数に、テキストエディタなどからコピーした
Tab文字を貼り付けて保存すればOKです。

Input Parameters
  vInputFile:テキストファイルのフルパス
  vDelimeter:区切り文字
      綴りが間違っていて「Delimiter」ではなく「Delimeter」になっているので注意!

Output Parameters
  (なし)

OpenOrActiveTextFileInExcelList.png

OpenOrActiveTextFileInExcelParam.png

PasteData

コピーしたデータを指定したExcelファイルの、指定したシートの、指定した範囲に貼り付けます。
vPasteByValueにTRUEを指定すれば値のみ貼り付け、
FALSEを指定すれば書式も含めて貼り付けされます。

コピーした範囲より小さい範囲を貼り付けに指定しても、無視してすべて貼り付けます。

コピーした範囲より大きい範囲を貼り付けに指定した場合は、
コピーしたのが複数セルの場合は、コピーしたデータだけを貼り付けます。
コピーしたのが1セルの場合は、指定した範囲すべてにデータだけを貼り付けます。

Input Parameters
  vInputFile:Excelファイルのフルパス
  vSheetName:(任意)シート名。指定しない場合はアクティブシートを対象とする
  vRange:(任意)セル範囲。
      指定しない場合はアクティブなセル(複数選択されている場合はすべて)を対象とする
  vPasteByValue:(任意)貼り付けの形式。値のみならTRUE、書式も含むならFALSE、
      指定しない場合はTRUE

Output Parameters
  (なし)

PasteDataList.png

PasteDataParam.png

RenameSheet

指定したExcelファイルの、指定したシートの名称を変更します。
対象のシートはアクティブにはなりません。

Input Parameters
  vInputFile:Excelファイルのフルパス
  vOldSheetName:変更前のシート名
  vNewSheetName:変更後のシート名

Output Parameters
  (なし)

RenameSheetList.png

RenameSheetParam.png

SaveAsPDF

指定したExcelファイルをPDF形式で保存します。
保存されるのはアクティブシートだけです。
このロジックでも実行すると、ファイルを開いていない場合は、一度ファイルが開いて
その後自動的に閉じられます。
すでに同名のPDFファイルが存在している場合は、何も言わずに上書き保存します。

Input Parameters
  vInputFile:Excelファイルのフルパス
  vPDFFileName:保存するPDFファイルのフルパス

Output Parameters
  (なし)

SaveAsPDF_List.png

SaveAsPDF_Param.png

SaveExistingOpenFile

現在開いているExcelファイルを保存します。
閉じているファイルに対して実行しても何も起きません。
保存して閉じたい場合は「CloseExcelFile」を使って、
まだ閉じないけど、いったん保存したい場合はこちらを使うという感じでしょうか。

Input Parameters
  vInputFile:Excelファイルのフルパス

Output Parameters
  (なし)

SaveExistingOpenFileList.png

SaveExistingOpenFileParam.png

SelectData

指定したExcelファイルの、指定したシートの、指定した範囲を選択状態にします。

Input Parameters
  vInputFile:Excelファイルのフルパス
  vSheetName:(任意)シート名。指定しない場合はアクティブシートを対象とする
  vRange:(任意)セル範囲。
      指定しない場合はアクティブなセル(複数選択されている場合はすべて)を対象とする

Output Parameters
  (なし)

SelectDataList.png

SelectDataParam.png

実行すると、以下のようになります。

SelectDataResult.png


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ビジネス推進部
西尾 玲