![見出し画像](https://assets.st-note.com/production/uploads/images/133700426/rectangle_large_type_2_d865ad6ce010232df9adf29f616f424f.png?width=800)
RPAデベロッパー基礎㊸ Excel アプリケーション スコープと Excel 連携アクティビティ
今日もUiPath Academyの「RPAデベロッパー基礎」で学習していきます
Excel アプリケーション スコープと Excel 連携アクティビティ
クラシック デザイン エクスペリエンスで、Excel との連携を有効にするには、[Excel アプリケーション スコープ] アクティビティを使用
これはコンテナー アクティビティで、指定した Excel ファイルの操作に使用するほかのすべての Excel 連携アクティビティを、このコンテナー内に配置する必要がある
実行が終了すると、指定したブックと Excel アプリケーションは閉じられる
[Excel アプリケーション スコープ] は、アクティビティの出力をコンテナー内の別のファイルに書き込むように設定できる
*複数の Excel ファイルの情報を同じワークフローで処理する場合は、各ファイルに対して [Excel アプリケーション スコープ] アクティビティを使用する必要がある
一方、ワークブック系アクティビティではスコープは不要
Excel ファイルは個々のアクティビティのプロパティで指定する必要がある
【デモ】拡張子の異なる 2 つのファイルからデータを読み取り、データ テーブルをフィルター処理してデータをまとめ、別のファイルにデータを書き込む
❶.xlsx 形式の Excel スプレッドシートの情報を読み取って、それを .xls ファイルに移動
[ワークブック] カテゴリの[範囲を読み込み] アクティビティを使用
Excel の範囲の値を読み込み、DataTable 型変数に格納
[Excel アプリケーション スコープ] アクティビティ
![](https://assets.st-note.com/img/1710220068181-8YhlTsxBUP.png?width=800)
Ctrl + K を押して新しい変数「OutputDT1」を作成
[ヘッダーを追加] オプションがオン
![](https://assets.st-note.com/img/1710221009055-Zv2QvpE8Qe.png?width=800)
Ctrl + K を押して新しい変数「OutputDT2」を作成
![](https://assets.st-note.com/img/1710221213066-Za7t9OE0Ob.png?width=800)
最初のファイルには、いくつかの企業の創業年、会社名、収益が表示
・2005 年より前に創業した企業をすべてフィルター処理
各変数に 1 つずつ、2 つの [データ テーブルをフィルター] アクティビティを追加
・[フィルター ウィザード] を開く
[入力データ テーブル] フィールドと
[出力データ テーブル] フィールドの両方に変数を入力
(2005 年以降に創業した企業は必要ないため)
フィルター処理ルールを設定
[フィルター行] セクションで、[保持] ラジオ ボタンが選択されていることを確認
フィルター処理する列は「Founding Year」
このフィールドでは大文字と小文字を区別するため、正確な列名を入力する必要がある
演算子は「次の値より小さい」で、値は「2005」
「2005」は小数第 2 位まで入力
Double 型の値を使用して比較が行われるため
![](https://assets.st-note.com/img/1710221876559-QzVjM10ttA.png?width=800)
次のタブ、[出力列]
このタブでは、列の順序を変更できる
「Company」列を最初にして、次を「Revenue」にし、その次を「Founding Year」にする
![](https://assets.st-note.com/img/1710226691119-5lOxAOsYAa.png?width=800)
2 番目の変数に対して同じ手順を繰り返す
今回も、[入力データ テーブル] フィールドと [出力データ テーブル] フィールドには同じ変数を指定
このファイルでは列名は異なり、「Founding」と指定
ただし、条件は同じ
![](https://assets.st-note.com/img/1710222281763-ijgzrvkNTJ.png?width=800)
次のタブ、[出力列]
「Company」列を最初にして、次を「Revenue」にし、その次を「Founding Year」にする 前と同じ
![](https://assets.st-note.com/img/1710222405334-JQ57pVBP8o.png?width=800)
2 つの変数に必要なデータが格納されたので、それらの情報を結合する必要がある
列名が一部異なっているため、[データ テーブルを構築] アクティビティを使用して「FilteredCompanies」という名前の新しい変数を作成
最初の列は「Company」という名前にし、String 型はそのままにして、空白のセルを無効にする
![](https://assets.st-note.com/img/1710222786168-F2fGTFk1rZ.png?width=800)
2 番目の列は「Revenue」という名前にし、String 型のデータはやはり保持
[null を許可] のチェックを外し、[最大長] を「100」に更新
![](https://assets.st-note.com/img/1710222980832-DwU1sbOEir.png)
最後の列は「Founding Year」という名前にし、データ型を [Int32] に設定
![](https://assets.st-note.com/img/1710223093474-FHoykWnhjN.png)
[繰り返し (データ テーブルの各行)] アクティビティを追加
([繰り返し (コレクションの各要素)] と同じ役割を果たすが DataTable 型変数でのみ使用)
2 つの変数の行を収集するため、2 つの [繰り返し (データ テーブルの各行)] アクティビティを使用します。
2 つのアクティビティの「row」の先頭の「r」を大文字にする
[データ行を追加] アクティビティでは、Row.ItemArray メソッドを使用して変数 OutputDT1 の行を変数 FilteredCompanies に追加することができる
このメソッドは、各行のデータを配列項目に変換して、変数 FilteredCompanies に追加
![](https://assets.st-note.com/img/1710225570591-XJ1ztqyqgW.png)
変数 OutputDT2 もまったく同じ作業を行う
![](https://assets.st-note.com/img/1710225601188-SgcTpy6zog.png)
データを Excel ファイルに書き込む
Excel の [範囲に書き込み] アクティビティを使用
このアクティビティを [Excel アプリケーション スコープ] コンテナー内に配置して、ファイル全体が上書きされるようにする
![](https://assets.st-note.com/img/1710226118871-9ZhjOcRGvt.png?width=800)
[Excel アプリケーション スコープ] コンテナー内のアクティビティは、Excel ファイルが開いているときに実行できるが、ワークブック系アクティビティではファイルを閉じる必要があることに注意
ファイル拡張子の種類に応じて、異なる [範囲を読み込み] アクティビティを使用しました。
.xlsx の場合は、[ワークブック] カテゴリの [範囲を読み込み] アクティビティを使用しました。
一方、ファイル拡張子が .xls のほうでは、[アプリの連携] カテゴリの Excel 系アクティビティ [範囲を読み込み] を使用しました。
各変数に 1 つずつ、2 つの [データ テーブルをフィルター] アクティビティを追加しました。
最初のアクティビティでは、変数 OutputDt1 を [フィルター ウィザード] の入力と出力の両方のフィールドに追加しました。
[保持] ラジオ ボタン オプションを選択し「Founding Year」値が「2005」より小さい値のみを保持するように条件を設定しました。
また、[フィルター ウィザード] 内の [出力列] タブで列の順序を並べ替えました。
変数 OutputDt2 についても、同じ手順を実行しました。
前のアクティビティと同じように、[出力列] タブで列の順序を設定しました。
2 つのデータ テーブルを結合する際、列名に差異が生じる問題に対処するために、新しい [データ テーブルを構築] アクティビティを使用し、「FilteredCompanies」という名前の新しい変数を作成しました。
2 つの変数の値を収集して、1 つの新しい変数に格納するために、データ テーブルの各行を反復処理する [繰り返し (データ テーブルの各行)] アクティビティを使用しました。
各行のデータを配列項目に変換するために、Row.ItemArray メソッドを使用しました。
この記事が気に入ったらサポートをしてみませんか?