2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Automation Anywhere でExcelを開き、ソートして保存したい

Posted at

Automation Anywhere でExcel Bookを開き、ソートして保存したいと思います。
Excelファイルをデータベース的に開く方法の詳細は、以下を参照させて貰いました。
[Automation Anywhereでデータベース操作を行う方法(Excel版)]
(https://qiita.com/satosea/items/ba37a1dffc53ad86ed2a)

ExcelファイルをOLE DB形式で呼び出した後、Commandの[Database/SQL Query]で、OrderBy句をつけたSQL文でデータを取得します。
001Database.png

取得した結果をCommandの[Loop/Each row in a SQL query dataset]で取得できます。

問題は、どこにどうやって書き戻すかです。既存のシートにDelete/Insertを実行しても良いのですが、新しいシートを作成して書き戻したい時は、もはやAutomation AnywhereのCommandだけではできません。
Excelに新しいシートを追加する時はShift+F11なので、Commandの[Inert Keystrokes]を使います。

002InsertKey.png

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]を押し、変数名と初期値をセットします。

003Variable.png

今回は変数としての$Cell$と定数のつもりの$Col$を宣言しました。

005Variable.png
004Variable.png

Loopのたびに初期位置に移動出来るように、変数$Cell$にセル名をセットします。

006Variable.png

$Col$$Counter$と書いています。$Col$には「A」が入っていて、$Counter$には行カウンタが入るので、Loopの中で「A1」「A2」「A3」...と値が変わります。
また、読み取った行は$Dataset Column(n)$で取得できます。nは1から始まる列番号です。

面倒になって列の数だけCommandを用意しましたが、ここもLoopにした方が格好良いですね。

最後に保存して閉じれば終わりです。

以下、Action Listです。
007ActionList.png

なお、ヘッダを転記できていませんが、元のシートから取得すればよいでしょう。

出来ましたけど、なんだか面倒ですね...

ここまでいろいろやってみましたが、Excelに対してマクロを発行した方が簡単な様な気がします。
Commandに[Excel/Run Excel Macro]があるので、ここからマクロを呼び出せますね。

環境 Automation Anywhere Community Edition 11.0.0.0 + Office365

2
1
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?