3
2

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からExcelへの転記をするチュートリアル(前編)

Last updated at Posted at 2019-10-13

自分の備忘録も兼ねて。

Automation Anywhere Enterpriseの場合、割と直感的にBot開発が出来るので、
「こういう時はこうするんだろう」という具合に、あまり細かいところは書かなくても慣れている人は作れてしまうのですが、
初学者の場合はそうもいかないので、今回のチュートリアルでは、「細かっ・・・」というくらい親切に書いてみました。
この細かさのチュートリアルをいくつかやれば、感覚がつかめてきて、使用したことのないコマンドや、
やったことのない処理についてもひらめくようになっていくのでは、という期待のもと、作ってみました。

分かりにくい部分や、説明が足りない部分などあればお知らせください。

想定する業務

金融庁が公開している銀行の持ち株会社のリストがあり、これを自社のシステム登録用フォーマットへ転記したい。
(今回の例はデータの数が少ないですが、練習の場合はデータの数が少ないほうが分かりやすいので・・・。)

データソース

こちら。
免許・許可・登録等を受けている業者一覧(預金取扱等金融機関) - 銀行持株会社 - DATA GO JP

image.png

転記先のフォーマット

こんな感じの昭和 平成を感じるシートを作ってみました。

登録用フォーマット.xlsx
image.png

手順

  • Botを新規作成、ワークベンチを開く
  • Excel -> Open Spreadsheetコマンドを挿入
  • Get Cellsコマンドを挿入
  • Loop -> Each Row In An Excel Dataset
  • Message Boxを入れて動作を確認してみる
  • 実際に使用するデータのある5行目から読み取るように改良してみる(If/Elseコマンドの使用)

手順(詳細)

1. 新しいBotを作成し、ワークベンチを開く

2. Excel -> Open Spreadsheetコマンドを挿入。

(ドラッグアンドドロップか、ダブルクリックか、選択してEnter。)

下記の通り、読み込むExcelシートを選択。

※今回使うシートは4行目にヘッダーがあるけれども、Excelコマンドの「ヘッダーを含む」ではこれを排除できないので、今回は「ヘッダーを含む」にはチェックを入れない。
image.png

3. Get Cellsコマンドを挿入

今回は「全セルを取得」を選択。
※ちなみに「複数のセルを取得」の場合、「A3からJ4000まで」といった範囲を絞って読み取ることも可能です。
image.png

4. Loopを挿入。

Excelシートを読み込む場合、各行を読み込むごとに・・・という条件のループを使う事が多いですが、今回もそれを使います。
Loop -> Each Row In An Excel Dataset
image.png
下記はそのまま設定をいじらず、保存ボタンを押す。
image.png
ここまでで、アクションリストの中身は以下のような感じになっているはずです。
image.png
ループの中に、「ループ実行させたいコマンドをここに入れてください。$Excel Column$の変数を使うと各列の値が取り出せます。」というようなコメントが入っています。

5. Message Boxを入れて動作を確認してみる。

Message Boxをループの中に置いてみましょう。
先ほどのコメントにあったアドバイスの通り、$Excel Column$の変数を使ってみます。
変数を挿入するにはF2キーを押します。
image.png

下記のようなダイアログが出てきますので、適当な変数をクリックして選択してから、「E」キーを何回か押すとExcel Columnの変数が出てきます。
(似た名前の変数があるので間違えないように要注意!)
image.png

「Insert」を押すと、今度は以下のようなダイアログが出てきます。
これは、「左から何列目の値を読んできましょうか?」と言ってますので、呼び出したい値のある列の番号を入れます。
今回は3を入れてみます。
image.png

OKを押すとBotのアクションリストは以下のような状態になっているはずです。
早速、Botを保存をしてから実行してみましょう。
image.png

すると・・・
image.png
上記のような空のメッセージが3回表示されたのち、以下が表示され、以降、会社名が表示されていくはずです。

image.png

6. 実際に使用するデータのある5行目から読み取るように改良してみる(If/Elseコマンドの使用)

読み取るExcelシートの1-4行目は空白だったり、ヘッダーがあり、実際に読み取りたいのは5行目以降の値です。
そんなときにはどうしたら良いでしょうか?
色々なやり方がありますが、今回はIfコマンドを使ってみたいと思います。
If、ということで、「もし~~だったら、~~する。」、「もし~~じゃなかったら、~~する。」といった、
条件によって処理の内容を変えることが出来ます。

今回は1-4行目の場合はメッセージを表示しない。というような事をしてみたいと思います。

それを実現するためには、今何行目を読み込んでいるかを知る方法が必要ですが、Automation Anywhere Enterpriseには便利な変数があります。

Counter変数

その便利な変数とは、Counter変数です。
この変数はLoopの中でのみ有効ですが、Loopが何回実行されたか知ることが出来る変数です。
実際動くところを見たほうが、この変数の役割が分かると思いますので、Message Boxの中身を以下のように書き換えて動かしてみましょう。
image.png

Botを保存して実行してみると・・・
ループ1回目の実行結果:
image.png

ループ4回目の実行結果:
image.png

というわけで、今回の場合は、「Counter変数の値=現在読み込んでいるのが何行目か」ということですので、
Counter変数の値に注目して、この変数の値の変化をもとに、条件を指定してあげれば良いのです。
(とりあえず頭は納得していなくても、手を動かしていけば分かるはずなので、次に進みましょう。)

If/Elseコマンド

次に挿入するのはIf/Elseコマンドのうち、以下のものです。「Variable」ですね。
こちらをLoopの中に挿入してください。
image.png

そうすると以下のようなダイアログが出てきますので、右下の黒い「編集」ボタンを押します。
image.png

さらに下記のようなダイアログが出てきますので、下記のように値を入れてください。
image.png
保存ボタンを押してコマンドの設定ダイアログを閉じると、以下のようになるはずです。
いま設定した条件を満たす場合、IfとEnd Ifに挟まれたコマンドが実行されます。
今回の場合は、Counter変数の値が4より大きい場合。つまりは5行目以降を読み込んでいる場合のみ実行されます。

Message BoxをIfとEnd Ifの間に入れてあげてください。
image.png

以下のようになればOKです。実行してみましょう。

image.png

うまく行けば以下のように、1-4行目を無視して、5行目の値から表示していくはずです。
image.png

7. 前半分はひとまず完成、後半は・・・

前半はここまでです。後半では開いたExcelシートを閉じて、出力先のフォーマットをコピーして、コピーしたファイルに値を書き出していきます。
もしかすると3編に分けるかもしれませんが、また時間があるときにまとめる予定です。

3
2
0

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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?