【UiPath】SQLServerからデータを抽出して、Excelに転記してみる

訪問して頂きありがとうございます。まさふくろーです。

この記事では、SQLServerからデータを抽出して、Excelに転記する方法をご紹介します。

目次

動作イメージ

  1. UiPath実行
  2. SQLServerに接続、テーブルからデータを抽出
  3. データテーブルに抽出データを格納
  4. データテーブルに格納されているデータをExcelファイルに転記

 

③データテーブルに格納されているデータ行数分、④の処理を繰り返します。

 

使用するサンプルデータ

使用するデータは、SQLServerのサンプルデータベース「Northwind」にある「Orders」テーブルです。

実行結果イメージ

SQLServer「Orders」テーブルの「OrderID」「ShipName」をExcelのA列、B列に転記する。

 

作成手順

プロジェクトの作成

UiPath Studioを起動します。

 

「プロセス」を選択します。

 

①プロジェクトの「名前」を入力⇒②プロジェクトを作成する「場所」を指定⇒③「作成」ボタンをクリックします。

 

フローチャートの作成

メニューバーの①「デザイン」タブをクリック⇒②「新規」をクリック⇒③「フローチャート」を選択します。

 

①フローチャートの「名前」を入力⇒②「作成」ボタンをクリックします。

 

「データベース」アクティビティのインストール

①「デザイン」タブをクリック⇒②「パッケージを管理」をクリックします。

 

①「すべてのパッケージ」をクリック⇒②検索ボックスに「UiPath.Database.Activities」と入力⇒③検索結果から「UiPath.Database.Activities」を選択します。

 

「インストール」ボタンをクリックします。

 

「保存」ボタンをクリックします。

 

「同意する」ボタンをクリックし、インストールします。

 

すると、「データベース」アクティビティが追加されます。

 

「クエリを実行」アクティビティの設置

①「アクティビティ」タブをクリック⇒②「アプリの統合」>「データベース」>「クエリを実行」を選択します。

 

マウスの左クリックを押したまま、フローチャート上に移動し、ドロップします。すると、「クエリを実行」アクティビティが設置されます。(ダブルクリックでも可能です。)

 

「データベース接続」の設定

「クエリを実行」の「ダブルクリックして表示」の部分をダブルクリックし、一つ下の階層に移動します。

 

「接続を構成」ボタンをクリックします。

 

「接続ウィザード」ボタンをクリックします。

 

①「Microsoft SQL Server」を選択⇒②「OK」ボタンをクリックします。

 

①SQLServerの「サーバー名」を入力⇒②「ユーザー名とパスワード」を入力⇒③使用する「データベース」を選択⇒④「OK」ボタンをクリックします。

 

「OK」ボタンをクリックします。

 

「SQLクエリ」の設定

「クエリを編集」ボタンをクリックします。

 

①「SQL文」を入力⇒②「OK」ボタンをクリックします。

 

パラメーターを使用する場合

「パラメーター」ボタンをクリックします。

 

①パラメーターを以下のように設定⇒②「OK」ボタンをクリックします。

 

 

名前(変数名) 方向
start 入力 Int32 10248
end 入力 Int32 10255

SQL文の中でパラメーターを使用する場合は、変数「start」「end」の前に「@」を付けます。このようにすることで、SQL文を直接編集する必要がなく、誤ってSQL文の条件を変えてしまったなどのリスクを減らすことができます。

 

「データテーブル型」の変数の作成

フローチャート下の「変数」タブをクリックします。

 

以下項目を設定します。

 

 

項目名 設定内容
名前 Dt
変数の型 DataTable
スコープ サンプル

データテーブルについて

データテーブルとは、一時的にデータを格納しておくための入れ物です。

 

スコープについて

スコープを「サンプル」に設定すると、変数「Dt」は、フローチャート「サンプル」内であればどこでも使用可能となります。

DataTable型の設定方法

①変数の型の「▼」部分をクリック⇒②「型の参照」を選択します。

 

①型の名前に「System.Data.DataTable」と入力⇒②「DataTable」を選択⇒③「OK」ボタンをクリックします。

 

「プロパティ」画面にて、以下項目を設定します。

 

 

項目名 設定内容
データテーブル Dt(SQLServerから抽出したデータを一時的に保存しておくための変数)

一番上の階層に戻る

「サンプル」の部分をクリックし、一番上の階層に戻ります。

 

「代入」アクティビティの設置

①「アクティビティ」タブをクリック⇒②「ワークフロー」>「制御」>「代入」を選択します。

 

マウスの左クリックを押したまま、フローチャート上に移動し、ドロップします。すると、「代入」アクティビティが設置されます。(ダブルクリックでも可能です。)

 

「カウンター変数」の作成(Excelのセル位置を動的にするための変数)

フローチャート下の「変数」タブをクリックします。

 

以下項目を設定します。

 

 

項目名 設定内容
名前 Count
変数の型 Int32(整数型)
スコープ サンプル
「カウンター変数の初期値」の設定

「代入」アクティビティの左側に「Count」、右側に「1」と入力します。

 

 

解説 Excelのセルの位置を1行目に設定(ヘッダー部分)。

「繰り返し(各行)」アクティビティの設置

①「アクティビティ」タブをクリック⇒②「プログラミング」>「データテーブル」>「繰り返し(各行)」を選択します。

 

マウスの左クリックを押したまま、フローチャート上に移動し、ドロップします。すると、「繰り返し(各行)」アクティビティが設置されます。(ダブルクリックでも可能です。)

 

「コレクション」の設定

「繰り返し(各行)」の「Double-click to view」の部分をダブルクリックし、一つ下の階層に移動します。

 

「コレクション」に上記で作成した、DataTable型の変数「Dt」を指定します。このように設定することで、変数「Dt」に格納されたデータを1行ずつ順番に処理することができます。

 

「代入」アクティビティの設置

①「アクティビティ」タブをクリック⇒②「ワークフロー」>「制御」>「代入」を選択します。

 

マウスの左クリックを押したまま、「Body」シーケンス上に移動し、ドロップします。すると、「Body」シーケンス内に、「代入」アクティビティが設置されます。

 

「カウンター変数」の設定

「代入」アクティビティの左側に「Count」、右側に「Count+1」と入力します。

 

 

解説 このように設定することで、繰り返し処理が行われるたびにカウンター変数「Count」の値が1つずつ加算されていきます。

上記「カウンター変数の初期値」の設定で、カウンター変数「Count」の値は「1」が設定されているので、代入後のカウンター変数「Count」の値は「2」からはじまります。

「Excel アプリケーションスコープ」アクティビティの設置

①「アクティビティ」タブをクリック⇒②「アプリの連携」>「Excel」>「処理」>「Excelアプリケーションスコープ」を選択します。

 

マウスの左クリックを押したまま、「Body」シーケンス上に移動し、ドロップします。すると、「Body」シーケンス内に、「Excelアプリケーションスコープ」アクティビティが設置されます。

 

「対象のExcelファイル」を指定

「…」ボタンをクリックし、転記する対象のExcelファイルを指定します。

 

「セルに書き込み」アクティビティの設置

①「アクティビティ」タブをクリック⇒②「アプリの連携」>「Excel」>「セルに書き込み」を選択します。

 

マウスの左クリックを押したまま、「実行」シーケンス上に移動し、ドロップします。すると、「実行」シーケンス内に、「セルに書き込み」アクティビティが設置されます。

 

「A列のセルの位置を動的にする」設定

セル範囲に「"A" + Count.ToString」と入力します。

 

 

解説 「"A" + Count.ToString」とは、「A」という文字と「カウンター変数」を連結するという意味です。

カウンター変数は、「2」~「データテーブルに格納されている行数」まで「1」ずつ加算されるので、「"A" + Count.ToString」の結果は、「A2」「A3」「A4」「A5」・・・となります。

「書き込みする値」を設定

書き込みの値に「row("OrderID").ToString」と入力します。

 

 

解説 「row("列名").ToString」と指定することでデータテーブルから任意の項目を取得することができます。

データテーブルの列名は、SQLServerの「Orders」テーブルの列名と同じです。

ExcelのA列は「受注コード」項目なので、「Orders」テーブルの「OrderID」を指定します。

「セルに書き込み」アクティビティの設置

①「アクティビティ」タブをクリック⇒②「アプリの連携」>「Excel」>「セルに書き込み」を選択します。

 

マウスの左クリックを押したまま、「実行」シーケンス上に移動し、ドロップします。すると、「実行」シーケンス内に、「セルに書き込み」アクティビティが設置されます。

 

「B列のセルの位置を動的にする」設定

セル範囲に「"B" + Count.ToString」と入力します。

 

 

解説 「"B" + Count.ToString」とは、「B」という文字と「カウンター変数」を連結するという意味です。

カウンター変数は、「2」~「データテーブルに格納されている行数」まで「1」ずつ加算されるので、「"B" + Count.ToString」の結果は、「B2」「B3」「B4」「B5」・・・となります。

「書き込みする値」を設定

書き込みの値に「row("ShipName").ToString」と入力します。

 

 

解説 「row("列名").ToString」と指定することでデータテーブルから任意の項目を取得することができます。

データテーブルの列名は、SQLServerの「Orders」テーブルの列名と同じです。

ExcelのB列は「出荷先名」項目なので、「Orders」テーブルの「ShipName」を指定します。

フローチャートの関連付けを行う

「サンプル」の部分をクリックし、一番上の階層に戻ります。

 

「Start」と「クエリを実行」アクティビティの関連付け

「クエリを実行」アクティビティを選択し、マウスの左クリックを押したまま「Start」の位置に近づけると、水色の「三角」マークが表示されます。

 

 

この状態で左クリックから手を離すことによって、「Start」と「クエリを実行」アクティビティの関連付けが行われます。

 

「クエリを実行」アクティビティと「代入」アクティビティの関連付け

「代入」アクティビティを選択し、マウスの左クリックを押したまま「クエリを実行」アクティビティの位置に近づけると、水色の「三角」マークが表示されます。

 

 

この状態で左クリックから手を離すことによって、「クエリを実行」アクティビティと「代入」アクティビティの関連付けが行われます。

 

「代入」アクティビティと「繰り返し(各行)」アクティビティの関連付け

「繰り返し(各行)」アクティビティを選択し、マウスの左クリックを押したまま「代入」アクティビティの位置に近づけると、水色の「三角」マークが表示されます。

 

 

この状態で左クリックから手を離すことによって、「代入」アクティビティと「繰り返し(各行)」アクティビティの関連付けが行われます。

 

動作確認

メニューバーの①「デザイン」タブをクリック⇒②「実行」をクリックし、意図した動きになっているか確認を行います。

最後まで読んでいただき、ありがとうございました!