皆さんお久しぶりです!!前回に引き続き、株式会社オブジェクティブフリントの竹内が皆さんに優しくUiPathを教えていきたいと思います!!
最近はアニメウマ娘プリティーダービーがアプリ化され、少しずつ競馬ブームが来ていて私としては嬉しく思っております。
出てくる競走馬の実際の生い立ちなど調べると、さらに面白いコンテンツだと思うので興味のある方は是非調べてみて下さい。
それでは本題に入ります、前回はアクティビティ「フロー条件分岐」を使って、名前が入力されていない場合、再度名前入力を求めるロボット作りに取り組んで頂きましたがいかがでしたでしょうか?
今回からExcelを使い、既にデータが入っているファイルから、データを読み取るロボット作りに取り組んでいきます。
Excelのデータからどのようなデータを読み取るかによって、アクティビティも使い分けます。
特定のセルだけ読み込む場合と、一定の範囲を読み込む場合の方法を確認しましょう。
1.事前準備
UiPathを立ち上げ、「スタート」を選択後「プロセス」をクリックします。
「プロセス」に名前を付けます。指定はないので好きな名前を付けましょう。
また、「説明」部分にどんなロボットなのか入力しておけば、これからたくさんロボットを作った時に見分けが付くのでおすすめです。
作成画面から「新規」を選択し、「シーケンス」をクリックします。
名前をつけて「作成」を押下します。
※今回は2つのアクティビティを使用するので、シーケンスも2つ用意します。
2.使用するアクティビティ
「セルを読み込み」
「範囲を読み込み」
「セルを読み込む」や「範囲を読み込む」といったExcel関連の機能は、同じ名前のアクティビティとしてExcelの配下と、ワークブックの配下で2つの種類が登録されています。
違いとしては、Excel配下のアクティビティはデバイスにインストールされているExcelと連携して作業が自動化され、ワークブック配下のアクティビティはUiPathのロボットだけでExcelがなくても作業を自動化できてしまいます。
Excel配下のアクティビティは、様々な操作を安定的に自動化できることが特徴です。
今回はOfficeのライセンスに問題がないのであれば、こちらを使うのが無難でしょう。
注意点※「Excel」配下に登録されているアクティビティはExcelの起動中に動作します。Excelを起動して値を読み込むため、必ず「Excelアプリケーションスコープ」内に配置しましょう。
今回はこのようなデータを用意しました。
3.セルを読み込み
「セルを読み込み」は指定したセルのデータをピンポイントで読み込むアクティビティです。
この場合「Sheet1」のセル「A1」のデータを読み込みます。
それでは、アクティビティ「セルを読み込み」を使い、エクセルの赤枠内データを抽出をします。
アクティビティから「Excelアプリケーションスコープ」を検索し、シーケンス内に配置します。
アクティビティ「Excelアプリケーションスコープ」の中に、Excel配下にあるアクティビティ「セルを読み込み」を配置します。
Excelアプリケーションスコープ」へ開きたいExcelファイルを入力します。
「セルを読み込み」には今回使う「Sheet1」のセル「C2」を指定します。
※この時注意すべき点は、入力する項目は文字列として認識させるため「””」(引用符)で囲んでください。尚、ファイルマークから開きたいExcelファイルを選択すると、引用符で自動的に囲んでくれます。
ここで変数パネルをクリックし変数を作成します。
今回は体重を表す「weight」を変数に設定し、スコープはシーケンス全体を指定します。
※今回はシーケンス名にセル読み込みと名付けたので、「セル読み込み」で設定します。
「セルを読み込み」のプロパティにて、出力する際に文字列以外の形式に変更されないよう表示形式を保持にチェックを入れます。
同じくプロパティの出力欄「結果」に先程設定した変数を入力します。
「セルを読み込み」の下にアクティビティ「メッセージボックス」を配置します。
「メッセージボックス」のテキストに変数「weight」を指定します。
それでは、これで一通り完成したので実行してみます。
問題なく「640」と表示されましたね。
あとはセルを変更するだけで好みのデータが抽出できます。
4.範囲を読み込み
「範囲を読み込み」は複数のセルの情報をまとめて取得します。
この場合「Sheet1」の「全て」のデータを読み込みます。
それでは、アクティビティ「範囲を読み込み」を用いて、エクセルシートに記載されている全てのデータを表示させます。先程とほとんど同様の手順で配置するだけですので、見返して頑張ってここまで組み立ててみましょう。
※先程作成した「範囲を読み込み」シーケンスを用いましょう。
そして、「メッセージボックス」のテキストに、先ほどと同じ変数を入力して実行してみましょう。
🤨・・・?何も表示されませんね。
そうなんです!ここで厄介なのが、出力される変数がデータテーブル型なので、先程のように文字列のString型に変換してあげないとデータの出力が出来ないのです。
そんなお悩みを解決してくれるアクティビティが「データテーブルを出力」です。
では、今回は馬を表す「horse」をDataTable型の変数に設定します。
デフォルトで「System.Data.DataTable」がある場合はそちらを選択して下さい。
無い場合は、「型の参照」をクリックし「DataTable」と検索して赤枠の型を選択して下さい。
では、このDataTable型とはどんな形式のデータを格納する型なのでしょうか。
答えとしては表形式のデータになります。
表形式というのは「行と列を持つデータ」であり、イメージとしてはEXCELの表そのものになります。
それでは「範囲を読み込み」と「メッセージボックス」の間に「データテーブルを出力」を配置し、「範囲を読み込み」のプロパティ出力欄「データテーブル」に先程設定した変数を入力します。
そして、「データテーブルを出力」のプロパティ入力欄「データテーブル」にDataTable型の変数と、出力にString型の変数を入力し、実行してみましょう。
今回は、きちんとシート内のデータが丸ごと抽出されたことを確認できました。
今回行ったことをおもちゃ箱に例えて分かりやすく説明すると……
- セルの読み込み=おもちゃ箱(シート)から指定したおもちゃ(セルの中身)を取り出して可視化出来るようにする
- 範囲の読み込み=範囲だけでは箱(シート)としての認識しかないため、箱の中身(入力されているデータ)を全て取り出し可視化出来るようにする
どうでしょうか、ある程度想像できたでしょうか?
でも実は、範囲の読み込みでも全体だけではなく、データの一部を指定して抽出する事も可能なのです。
今回はだいぶ長い説明になってしまったのでここまでとし、次回にこの説明をしていきます。
これからエクセルが頻繁に登場し、より実践的で難しい内容になってくると思いますが、今までと変わらず皆さんの学習のお役に立てればと思っておりますので皆さん頑張りましょう!!!
それでは🏇🏇