Upgrade to Pro — share decks privately, control downloads, hide ads and more …

200825 UiPathのすすめ第2部 Excel編 はなっちさん

200825 UiPathのすすめ第2部 Excel編 はなっちさん

RPACommunity

August 25, 2020
Tweet

More Decks by RPACommunity

Other Decks in Technology

Transcript

  1. UiPathの構成 基本形(Enterprise Edition) 標準形(Enterprise Edition) 拡張形(Enterprise Edition) Studio Studio Robot

    Studio Robot Orchestrator Community Edition Studio Orchestrator Robot U i P a t h リ セ ラ ー 独 力 1. 個人のRPA開発者および小規模事業者向け。 2. ずっと無料で、STUDIOは2ライセンス。Attended Robots2台。 3. UiPathによる自動更新。UiPathフォーラムの無償サポート。 引用元(抜粋):https://www.uipath.com/ja/start-trial
  2. このセミナーでの範囲 基本形(Enterprise Edition) 標準形(Enterprise Edition) 拡張形(Enterprise Edition) Studio Studio Robot

    Studio Robot Orchestrator Community Edition Studio Orchestrator Robot U i P a t h リ セ ラ ー 独 力 1. 個人のRPA開発者および小規模事業者向け。 2. ずっと無料で、STUDIOは2ライセンス。Attended Robots2台。 3. UiPathによる自動更新。UiPathフォーラムの無償サポート。 引用元(抜粋):https://www.uipath.com/ja/start-trial
  3. 今後の展開 基本形(Enterprise Edition) 標準形(Enterprise Edition) 拡張形(Enterprise Edition) Studio Studio Robot

    Studio Robot Orchestrator Community Edition Studio Orchestrator Robot U i P a t h リ セ ラ ー 独 力 1. Orchestratorは、野良ロボット対策、カスタムアクティビティ配 付、定時自動起動など、便利な機能がいっぱい! 2. コンピュータ名、ログイン情報などの設定が必要になります 引用元(抜粋):https://www.uipath.com/ja/start-trial
  4. UiPathのすすめ 1. 前回の復習 2. EXCEL関連の基本的な考え 3. EXCEL関連のアクティビティ 4. つくってみよう -1

    今回作ってみるもの -2 かんたんな仕様書を書いてみよう -3 EXCELの操作の基本 -4 さて、ロボットの処理 5. 変数ってなんだ? 6. DataTable型って! 7. 振り返り
  5. 【処理概要】 ブラウザよりアクセスしたサイトから、外為両替相場情報を取得し、それを最終更新日のシートを持つEXC ELブックに転記する • かんたんな仕様書を書いてみよう <入力> InternetExplorer <出力> Excel <処理>

    入力(型式、内容)を確認する どういうことをするのか確認する ⇒使うアクティビティを想像してみよう 出力(型式、内容)を確認する 5. つくってみよう-2 振返り
  6. 5. つくってみよう-9 • 画面の構成…習うより慣れる! プロジェクトパネル: ロボットのファイルを管 理 アクティビティパネル: ロボットを組み立てる 部品群

    デザインパネル: ロボットにアクティビティを 搭載する。変数、引数を 定義する プロパティパネル: 搭載したアクティビティ のパラメタを設定する リボン:作成、保存、実行、レコーディング など 振返り
  7. 5. つくってみよう-20 変数(Variable)とは、一般的にプログラム言語において「値を入れておく箱」のような ものと言われます。 様々なデータを変数(箱)に中に入れることによって、中身が代わっても自由に引き出す ことができます。UiPathだけでなく、どのプログラミング言語においても必須の機能 のひとつですので、この機会に変数について理解しておきましょう。 https://uipath.site/basic/variables.html String 文字列(数字)を入れる型

    Int32 数値を入れる型 (-2147483648から+2,147,483,647) 21億4748万… Int64 数値を入れる型 922垓3372京368億5477万… (-9223372036854775808から9,223,372,036,854,775,807) String[] 文字列型の配列 Boolean True/Falseを入れる型 DateTime 日付や時間を入れる型 Object オブジェクトを入れる型 DataTable EXCELシートを入れる型 変数A 変数B 変数X 変数B <スコープ … 変数の有効範囲> 変数X 変数C 変数Bは上位 の定義と被る 変数Xは同位の 定義と被らない "123"と123とでは意味が違う "123"は文字列(数字)としての"123"で あり、123は数値としての123である。 "123" + "456" = "123456" 123 + 456 = 579 振返り
  8. 5. つくってみよう-28 今アクティブなxamlファイルを デバッグ/実行する([F6] Or Ctrl+[F6]) このプロセスのメインに設定されているxamlファイルを デバッグ/実行する([F5] Or Ctrl+[F5])

    ➢ デバッグ ... 設定したブレイクポイントで止まってみたり、 アクティビティ毎の通過ログを取得できるけど、 トライ~キャッチは効かない ➢ 実行 ... デバッグのような事は出来ないけど、その分高速 振返り
  9. 5. つくってみよう-29 project.json メインは” Main.xaml“だ! Main.xaml シーケンスA.xaml シーケンスB.xaml これやって! これやって!

    これやった! これやった! 動け! project.json メインは”NewMain.xaml“だ! Main.xaml シーケンスA.xaml シーケンスB.xaml これやって! これやって! これやった! これやった! 動け! これやって! NewMain.xaml ↓ファイルを実行 ↓ファイルを実行 ↓実行 ↓実行 今、アクティブなXAML 振返り
  10. Excelの処理パタン • Excelブックの操作では、指定シートを対象に、 セルまたはレンジ(範囲)を読み込みできる(変数に格納) 列A 列B 列C DA1 DB1 DC1

    DA2 DB2 DC2 DA3 DB3 DC3 DA4 DB4 DC4 変数: DT(DataTable型) セル 変数: C (GenericValue型) Col1 Col2 Col3 列A 列B 列C DA1 DB1 DC1 DA2 DB2 DC2 DA3 DB3 DC3 DA4 DB4 DC4 変数: DT(DataTable型) ▪ヘッダーの追加 □ヘッダーの追加 UiPath
  11. 違い • 手作業の場合は、クリップボードを介在さ せてシート間をやりとりするので、コピー &ペーストがPairとなる 列A 列B 列C DA1 DB1

    DC1 DA2 DB2 DC2 DA3 DB3 DC3 DA4 DB4 DC4 変数: DT(DataTable型) クリップボード(色情報あり) • UiPathのロボットの場合は、セル、範囲を 変数に保有するので、読み込み部分と書 き込み部分とはPairにする必要はない
  12. こうやって実現する! • 行の高さ変更、 列の幅変更 • シート名変更 • 罫線描画 • ピボットテーブル系

    • グラフ系 • シート内でセルの置換 • Excelのショートカットを 「ホットキーを押下」ア クティビティを駆使す る • UiPath公式アクティビ ティの「かんたんExcel アクティビティパック」 を使用する https://connect.uipath.com/ja/marketplace/components/easy-excel-activity-pack
  13. 手でやると… 1. 新しいファイルを開く 2. “Sheet1“を、 「CSVファイル名_OK」に改名する 3. “Sheet2“を、 「CSVファイル名_NG」に改名する 4.

    「外国為替公示相場」を読み取り専用で開く 5. 請求CSVファイルを開く 6. CSVシートに最左端列に「行番号」を振る 7. CSVファイルの最右端列を「MIDDLE」とし、VLOOKUP関数を挿入する =Vlookup("通貨コード",[外国為替公示相場_7月3日.xlsx]外国為替公示相場_7月3日!$B:$E,4,FALSE) 8. CSVシートを「MIDDLE」 、 「行番号」でSORTする 9. CSVシートをAutoFilterし、 「MIDDLE」が"#N/A"でFilterを掛ける 10. "#N/A"でFilterを掛けたシートの中身を選択し、Ctrl+cする 11. 新しいファイルの 「CSVファイル名_NG」にCtrl+v(値だけ)する 続く 手作業
  14. 12. CSVシートをAutoFilterし、 「MIDDLE」が"#N/A"以外でFilterを掛ける 13. 「MIDDLE」の最右端列を「円金額」とし、 PRODUCT関数を挿入する = PRODUCT(数量,単価, MIDDLE) 14.

    "#N/A"以外でFilterを掛けたシートの中身を選択し、Ctrl+cする 15. 新しいファイルの 「CSVファイル名_OK」にCtrl+v(値だけ)する 16. 「CSVファイル名_OK」シートを、 「行番号」でSORTする 17. 「CSVファイル名_OK」シートの、 「行番号」列を削除する 18. 「CSVファイル名_NG」シートを、 「行番号」でSORTする 19. 「CSVファイル名_NG」シートの、 「行番号」列を削除する 20. 新しいファイルを、 CSVファイル名.xlsxとして保存し、閉じる 21. CSVファイルを、保存せずに閉じる 22. 「外国為替公示相場」を閉じる 結構な手数が掛かる 続き 手作業 手でやると…
  15. 【処理概要】 青い銀行からダウンロードした「外国為替公示相場」と、請求CSVファイルを結合し、円での金額に変換、別 のEXCELに転記保存しよう! <入力> Excel ⇒外国為替公示相場_7月 3日.xlsx CSV ⇒20200704請求書.csv <出力>

    Excel 20200704請求書.xlsx <処理> 外貨両替相場の最左端シートを読み込む CSVをEXCELで読み込む CSV上の”通貨”と、 “通貨コード”とで突合する 通貨コードがあったデータと、 通貨コードがなかった データとで、保存するシートを分ける 通貨コードで引いたMIDDLE * 数量 * 単価を計算 通貨コードがあったデータに合計を転記する かんたんな仕様書を書いてみよう(1)
  16. <入力> Excel ⇒外国為替公示相場_7月 3日.xlsx CSV ⇒20200704請求書.csv <出力> Excel 20200704請求書.xlsx <処理>

    外貨両替相場の最左端シートを読み込む CSVをEXCELで読み込む CSV上の”通貨”と、 “通貨コード”とで突合する 通貨コードがあったデータと、 通貨コードがなかった データとで、保存するシートを分ける 通貨コードで引いたMIDDLE * 数量 * 単価を計算 通貨コードがあったデータに合計を転記する 【処理概要】 青い銀行からダウンロードした「外国為替公示相場」と、請求CSVファイルを結合し、円での金額に変換、別 のEXCELに転記保存しよう! いきなりこんなに は書けない! かんたんな仕様書を書いてみよう(2)
  17. <入力> Excel ⇒外国為替公示相場_7月 3日.xlsx CSV ⇒20200704請求書.csv <出力> Excel 20200704請求書.xlsx <処理>

    外貨両替相場の最左端シートを読み込む CSVをEXCELで読み込む CSV上の”通貨”と、 “通貨コード”とで突合する 通貨コードがあったデータと、 通貨コードがなかった データとで、保存するシートを分ける 通貨コードで引いたMIDDLE * 数量 * 単価を計算 通貨コードがあったデータに合計を転記する 【処理概要】 青い銀行からダウンロードした「外国為替公示相場」と、請求CSVファイルを結合し、円での金額に変換、別 のEXCELに転記保存しよう! ③どのフォルダに、 どんな名前、シートに、 どんな風に格納され ているか? ①どんな出力内 容にするか? ②突合条件、必要項目 があるか? かんたんな仕様書を書いてみよう(3)
  18. Excel操作の基本 • どこのフォルダに存在 Or 格納するか? • どのようなファイル名で存在 Or 保存するか? •

    どのシート名で「読み込む」 Or 「書き込む」のか? • シート上、どんな事をするのか(「セル」 Or 「範囲」) • Excelアプリケーション スコープを使用する – 「読み込み」系アクティビティ – DataTable型として処理(結合、フィルタリング、マージ…) – 「書き込み」系アクティビティ – ブックを保存 – ブックを閉じる 事前確認項目 ロボット 6
  19. MEMORY 現在の状態 通貨 記号 TTS TTB MIDDLE 米ドル USD 108.5

    106.5 107.5 英ポンド GBP 137.95 129.95 133.95 ユーロ EUR 122.29 119.29 120.79 カナダドル CAD 80.81 77.61 79.21 変数: DT(DataTable型) 品名 通貨コード 数量 単価 BEATLES - LET IT BE GBP 2 3.88 Huey Lewis and the News - Power of Love USD 5 1.75 Kraftwerk - The Robots EUR 4 2.34 BEATLES - HELP! EU8 7 2.55 変数: CDT(DataTable型)
  20. MEMORY 現在の状態の説明&宣伝 通貨 記号 TTS TTB MIDDLE 米ドル USD 108.5

    106.5 107.5 英ポンド GBP 137.95 129.95 133.95 ユーロ EUR 122.29 119.29 120.79 カナダドル CAD 80.81 77.61 79.21 変数: DT(DataTable型) 品名 通貨コード 数量 単価 BEATLES - LET IT BE GBP 2 3.88 Huey Lewis and the News - Power of Love USD 5 1.75 Kraftwerk - The Robots EUR 4 2.34 BEATLES - HELP! EU8 7 2.55 変数: CDT(DataTable型) • 各データは、パソコンのメモリの中 に、変数として格納されます。 • 今回扱うデータは、「DataTable型」 の変数として格納、参照します。 • 「DataTable型」の変数を扱うには、 【列名】が重要です。 列名 列名
  21. MEMORY CSV上の"通貨"と、 "通貨コード"とで突合する(3) 通貨 記号 TTS TTB MIDDLE 米ドル USD

    108.5 106.5 107.5 英ポンド GBP 137.95 129.95 133.95 ユーロ EUR 122.29 119.29 120.79 カナダドル CAD 80.81 77.61 79.21 変数: DT(DataTable型) 品名 通貨コード 数量 単価 BEATLES - LET IT BE GBP 2 3.88 Huey Lewis and the News - Power of Love USD 5 1.75 Kraftwerk - The Robots EUR 4 2.34 BEATLES - HELP! EU8 7 2.55 変数: CDT(DataTable型) • 【入力データテーブル1】の【列テーブル1】で指定した列名をキー1とする。 • 【入力データテーブル2】の【列テーブル2】で指定した列名をキー2とする。 • キー1とキー2が一致した時のデータを求めるため、結合型を" = "とする。 • 【入力データテーブル1】の全件を【出力データテーブル】に出力させるため、 結合型は"Left"を指定する。 • 結合した結果は、【出力データテーブル】に指定した変数に格納される
  22. MEMORY CSV上の"通貨"と、 "通貨コード"とで突合する(4) 通貨 記号 TTS TTB MIDDLE 米ドル USD

    108.5 106.5 107.5 英ポンド GBP 137.95 129.95 133.95 ユーロ EUR 122.29 119.29 120.79 カナダドル CAD 80.81 77.61 79.21 変数: DT(DataTable型) 品名 通貨コード 数量 単価 通貨 記号 TTS TTB MIDDLE BEATLES - LET IT BE GBP 2 3.88 英ポンド GBP 137.95 129.95 133.95 Huey Lewis and the News - Power of Love USD 5 1.75 米ドル USD 108.5 106.5 107.5 Kraftwerk - The Robots EUR 4 2.34 ユーロ EUR 122.29 119.29 120.79 BEATLES - HELP! EU8 7 2.55 変数: NDT(DataTable型) 品名 通貨コード 数量 単価 BEATLES - LET IT BE GBP 2 3.88 Huey Lewis and the News - Power of Love USD 5 1.75 Kraftwerk - The Robots EUR 4 2.34 BEATLES - HELP! EU8 7 2.55 変数: CDT(DataTable型)
  23. MEMORY 品名 通貨コード 数量 単価 通貨 記号 TTS TTB MIDDLE

    BEATLES - LET IT BE GBP 2 3.88 英ポンド GBP 137.95 129.95 133.95 Huey Lewis and the News - Power of Love USD 5 1.75 米ドル USD 108.5 106.5 107.5 Kraftwerk - The Robots EUR 4 2.34 ユーロ EUR 122.29 119.29 120.79 BEATLES - HELP! EU8 7 2.55 "通貨"があったデータとなかったデータとを分ける(3) • 【入力データテーブル】に対象とするデータテーブルを指定する • 【列】には、抽出キーとする列名を指定する。 ⇒存在しない列名の場合は、実行時にエラーとなる • 【行フィルターモード】は、•保持とする。 • 【操作】には抽出条件を指定する。 • 【出力データテーブル】で、Ctrl+kで定義した変数に抽出した結果が格納さ れる 変数: NDT(DataTable型)
  24. MEMORY 品名 通貨コード 数量 単価 通貨 記号 TTS TTB MIDDLE

    BEATLES - LET IT BE GBP 2 3.88 英ポンド GBP 137.95 129.95 133.95 Huey Lewis and the News - Power of Love USD 5 1.75 米ドル USD 108.5 106.5 107.5 Kraftwerk - The Robots EUR 4 2.34 ユーロ EUR 122.29 119.29 120.79 BEATLES - HELP! EU8 7 2.55 "通貨"があったデータとなかったデータとを分ける(4) • 【入力データテーブル】に対象とするデータテーブルを指定する • 【列】には、抽出キーとする列名を指定する。 【行フィルターモード】は、•削除とする。 • 【操作】には抽出条件を指定する。 ⇒◦保持の時と同じ条件で、•削除をした方がミスを防げる • 【出力データテーブル】で、Ctrl+kで定義した変数に抽出した結果が格納さ れる 変数: NDT(DataTable型)
  25. MEMORY "通貨"があったデータとなかったデータとを分ける(5) 変数: NGDT(DataTable型) 変数: OKDT(DataTable型) 品名 通貨コード 数量 単価

    通貨 記号 TTS TTB MIDDLE BEATLES - HELP! EU8 7 2.55 品名 通貨コード 数量 単価 通貨 記号 TTS TTB MIDDLE BEATLES - LET IT BE GBP 2 3.88 英ポンド GBP 137.95 129.95 133.95 Huey Lewis and the News - Power of Love USD 5 1.75 米ドル USD 108.5 106.5 107.5 Kraftwerk - The Robots EUR 4 2.34 ユーロ EUR 122.29 119.29 120.79
  26. 円換算した金額を求める(7) MEMORY 品名 通貨コード 数量 単価 通貨 記号 TTS TTB

    MIDDLE BEATLES - HELP! EU8 7 2.55 変数: NGDT(DataTable型) 品名 通貨コード 数量 単価 通貨 記号 TTS TTB MIDDLE 円換算 BEATLES - LET IT BE GBP 2 3.88 英ポンド GBP 137.95 129.95 133.95 1039 Huey Lewis and the News - Power of Love USD 5 1.75 米ドル USD 108.5 106.5 107.5 941 Kraftwerk - The Robots EUR 4 2.34 ユーロ EUR 122.29 119.29 120.79 1131 変数: OKDT(DataTable型)
  27. 合計行を追加する(4) MEMORY 品名 通貨コード 数量 単価 通貨 記号 TTS TTB

    MIDDLE BEATLES - HELP! EU8 7 2.55 変数: NGDT(DataTable型) 品名 通貨コード 数量 単価 通貨 記号 TTS TTB MIDDLE 円換算 BEATLES - LET IT BE GBP 2 3.88 英ポンド GBP 137.95 129.95 133.95 1039 Huey Lewis and the News - Power of Love USD 5 1.75 米ドル USD 108.5 106.5 107.5 941 Kraftwerk - The Robots EUR 4 2.34 ユーロ EUR 122.29 119.29 120.79 1131 3111 変数: OKDT(DataTable型)
  28. 自動販売機で考えてみよう 自動販売機とは、ボタンを押すと、商品が出てくる機械。 でも、売価以上のお金をいれないと、商品が出てこない 150 お金を溜める所に 50円 • 100円+100円=200円と言う事が、自動 販売機には分かる! •

    200円から150円の商品を買って、お 釣りが50円と言うのも分かる! 100円をいれてみる ⇒ 100円では足りないので商品が出てこない もう100円をいれてみる ⇒ 200円になって足りたので商品が出てくる!
  29. 自動販売機で考えてみよう 自動販売機とは、ボタンを押すと、商品が出てくる機械。 でも、売価以上のお金をいれないと、商品が出てこない 150 お金を溜める所に 50円 • 100円+100円=200円と言う事が、自動 販売機には分かる! •

    200円から150円の商品を買って、お 釣りが50円と言うのも分かる! 情報をためておく場所、名前を変数 100円をいれてみる ⇒ 100円では足りないので商品が出てこない もう100円をいれてみる ⇒ 200円になって足りたので商品が出てくる!
  30. DataTable型から、一つのデータを参照するには… DataTable型のデータを参照/設定は、 ① データテーブルの ② (ある)行の ③ (ある)列 の順である。 ②

    ③ 例:B4セル相当位置 DataTable.Rows(3).Item(1) ←※2 ↑※1 Or ↓※1 DataTable.Rows(3).Item("Column1") ※1 行の先頭は0から始まる ※2 最左端列は0から始まる …
  31. よくある勘違い 列A 列B 列C 行A1 行B1 行C1 行A2 行B2 行C2

    行A3 行B3 行C3 行A4 行B4 行C4 行A5 行B5 行C5 範囲を読み込み 列A 列B 列C 行A1 行B1 行C1 行A2 行D2 行C2 行A3 行B3 行C3 行A4 行B4 行C4 行A5 行B5 行C5 代入 この時点で、処理を終了させ、Excelに値が反映されていないって思ってしまう
  32. よくある勘違い 列A 列B 列C 行A1 行B1 行C1 行A2 行B2 行C2

    行A3 行B3 行C3 行A4 行B4 行C4 行A5 行B5 行C5 範囲を読み込み 列A 列B 列C 行A1 行B1 行C1 行A2 行D2 行C2 行A3 行B3 行C3 行A4 行B4 行C4 行A5 行B5 行C5 代入 「範囲を読み込み」と同じ左上セルを指定して、 「範囲に書き込み」アクティビティで書き戻す! 範囲に書き込み
  33. 3. 振り返り-1 • Uipath Studio Community Editionには、安定版とプレビュー版 がある(切り替え可能) • 通常Studioと、StudioXがある(切り替え後、再起動)

    • アクティビティ名は覚えず、検索する! ⇒日本語、英語でもOK! ⇒⇒多用するアクティビティは、 お気に入りに登録!
  34. 3. 振り返り-2 • 変数は、Ctrl+kで定義できる。 但し、型と、スコープ(変数の 有効範囲)は確認する事! • 変数は、Ctrl+Spaceで参照で きる。 •

    設定はアクティビティ本体だ けでなく、パラメタパネルでも 設定できる(パラメタパネルで なければ設定できないものも ある!) 。
  35. 3. 振り返り-3 • どんなロボットにするかブレないように、入力と出力を書いた 設計書を書いておこう • どんなアクティビティを使うかをちょっと決めよう! ⇒「範囲を読み込み」 Or 「セルを読み込み」

    • それには、「どんなアクティビティがあるか」知っておこう! • それには、「UiPath アカデミー」を受講しよう! https://academy.uipath.com/