Automation Anywhere でExcel Bookを開き、ソートして保存したいと思います。
Excelファイルをデータベース的に開く方法の詳細は、以下を参照させて貰いました。
[Automation Anywhereでデータベース操作を行う方法(Excel版)]
(https://qiita.com/satosea/items/ba37a1dffc53ad86ed2a)
ExcelファイルをOLE DB形式で呼び出した後、Commandの[Database/SQL Query]で、OrderBy句をつけたSQL文でデータを取得します。
取得した結果をCommandの[Loop/Each row in a SQL query dataset]で取得できます。
問題は、どこにどうやって書き戻すかです。既存のシートにDelete/Insertを実行しても良いのですが、新しいシートを作成して書き戻したい時は、もはやAutomation AnywhereのCommandだけではできません。
Excelに新しいシートを追加する時はShift+F11なので、Commandの[Inert Keystrokes]を使います。
Select Window は書込み先のExcelシートを指定し、Keystrokesには[SHIFT DOWN][F11][SHIFT UP]と記載します。
なお、DOWNだけ書いてUPせずに保存しようとすると、
Invalid sequence of 'Shift' Key. Are you sure you want to save?
と叱られます。
セルの位置を指定するために変数を用意しましょう。
画面右の[VARIABLE MANAGER]を開き、[Add]を押し、変数名と初期値をセットします。
今回は変数としての$Cell$
と定数のつもりの$Col$
を宣言しました。
Loopのたびに初期位置に移動出来るように、変数$Cell$
にセル名をセットします。
$Col$$Counter$
と書いています。$Col$
には「A」が入っていて、$Counter$
には行カウンタが入るので、Loopの中で「A1」「A2」「A3」...と値が変わります。
また、読み取った行は$Dataset Column(n)$
で取得できます。nは1から始まる列番号です。
面倒になって列の数だけCommandを用意しましたが、ここもLoopにした方が格好良いですね。
最後に保存して閉じれば終わりです。
なお、ヘッダを転記できていませんが、元のシートから取得すればよいでしょう。
出来ましたけど、なんだか面倒ですね...
ここまでいろいろやってみましたが、Excelに対してマクロを発行した方が簡単な様な気がします。
Commandに[Excel/Run Excel Macro]があるので、ここからマクロを呼び出せますね。
環境 Automation Anywhere Community Edition 11.0.0.0 + Office365