UiPathでEXCELのデータを読みこもう!

By | 2018年7月16日

UiPathでEXCELのデータを読みこもう!

※2018.3よりUiPathがデフォルト日本語のアクティビティ名となりましたので、
この記事では各アクティビティや機能名を日本語名(英語名)というように記載しています。
※2018.2以前のバージョンではアクティビティを利用する前にExcel用のパッケージをインストールしておく必要があります
また、当然ながらMicrosoft Excelがインストールされていないと利用できません。
アクティビティのシステム>ファイル>ワークブック内にあるアクティビティは、
EXCELファイルのパスを指定することでEXCEL無しでも動作できるようです。

 

UiPathではEXCELアクティビティを使うことで、EXCELファイルから直接データを読み込むことができます。
その簡単な使い方を覚えましょう。

1.Excelアプリケーションスコープ(EXCEL Application Scope)アクティビティを追加する

まずEXCEL系操作をする場合はこのアクティビティをセットし、対象となるEXCELファイルを決定します。
今回はなにか適当なデータが入っているファイルを選びましょう。
例としてSheet1シートに以下のような表のデータが入っている前提で進めていきます。

TEST1 TEST2 TEST3
1 あああ 1000
2 いいい 2000
4 ええええ 4000
3 うううう 3000

 

2.実行(Do)スコープの中に「範囲を読み込む」(Read Range)アクティビティを追加する。

デフォルトで”Sheet1″と””という文字列が入っています。
今回例のようなデータがあるシートはSheet1となりますので、
このままの設定で問題ありません。もし自分でシート名をつけていたら変更してください。

CドライブにあるtestというEXCELファイルを対象にした設定例が以下になります。

3.「範囲を読み込む」(Read Range)アクティビティのプロパティで、EXCELデータの格納先を指定する

「範囲を読み込む」(Read Range)アクティビティのプロパティの中に出力(Output)がありますので、
そこにEXCELから取りこんだデータを格納する変数を指定します。


本当はここまででEXCELのデータをUiPathに取りこみ完了しているのですが、
それだけだと意味がわからないと思いますので、以降で出力してみます。

4.取りこんだデータを出力させるために、「繰り返し(各行)」(For Each Row)アクティビティとメッセージボックス(message box)を追加する

取り込んだデータはDatatable型という変数の中に入ります。
これを取りだす時に便利なのが「繰り返し(各行)」(For Each Row)というアクティビティです。
一つの列のデータを取りだし、メッセージボックス(message box)で表示させる準備をします。

5.「繰り返し(各行)」(For Each Row)で先ほどのdatatable変数を使うために変数(Variables)タブで変数のスコープを変更する

変数は作ったときのスコープが自動設定されるため、
例の「繰り返し(各行)」(For Each Row)アクティビティのように、
別のスコープからは使うことができません。その際は変数(Variables)タブから変数一覧を表示させ、
先ほどの「範囲を読み込む」(Read Range)アクティビティが入っているDoスコープを選びます。


すると先ほど作成した変数(ここではtest1)が表示されるので、
その中のスコープ(Scope)列の実行(Do)をシーケンス(Sequence)に変更しましょう。

6.メッセージボックス(message box)でrow(“列名”).tostringと設定する

「繰り返し(各行)」(For Each Row)アクティビティはデータテーブルを上から1行ずつ読みこんでくれるアクティビティです。
1行分のデータはrow(アクティビティの中で指定)という変数に入っていますので、
さらに1行の中で出したい列名を指定することで、個別に出力が可能です。

今回は例としてTEST1~3までの名前を付けたので「row(“TEST2”).tostring」として、TEST2の値を出してみましょう。
※ちなみに.tostringは文字型への変換で、今回の本題とはあまり関係ありません。

上のようにダイアログが画面に表示されていき、4行目までのデータが出ると自動で終了してくれました。
「繰り返し(各行)」(For Each)は中身があるだけ処理を繰り返してくれますので、
何回繰り返す、などは一切指定する必要がありません。

 

(おまけ)読み込み時のオプションについて

「範囲を読み込む」(Read Range)アクティビティのプロパティに2つのオプションがあります。

・ヘッダーの追加(Add Headers)

このチェックボックスをオンにすると、EXCELのヘッダー行(1行目の列名が書いているところ)を
ヘッダーとして取り扱います。ヘッダーとすると、「繰り返し(各行)」(For Each Row)などの繰り返し処理をする際、
列名で処理する場所を指定できます。

例えば今回の例で言うと、「row(“TEST2”).tostring」としている部分ですね。
この「TEST2」がヘッダーです。もしこのチェックを外した場合は1行目のヘッダーもデータとして認識されます。
そのかわり、列名で指定ができなくなりますので、上の例だと「row(1).tostring」というように指定する必要があります。
(1)とは、列の順番です。左から順に0,1,2と数えていきます。TEST2は2番目なので、0,1と数えて(1)と指定しています。
こういったように、少し人間にはわかりずらくなってしまうので後でメンテしづらいです。
このオプションはデフォルトでオンになっています。

・フィルターの使用(Use Filter)

EXCELファイルにフィルター(非表示)がかかっている場合、
それを有効にするかどうかを決めます。チェックボックスをオンにすると、フィルターが有効になります。
EXCEL側で予め非表示にしておいた情報を使いたくない場合などは、オンにしましょう。
デフォルトではオフになっています。