UiPath

【UiPath】Excelの読み込みを高速化する

Excelの読み込みは、デフォルトのプロパティ設定を少し変更するだけで高速化できます。

Excelの読み込み速度が遅くて悩んでいる方向けの記事です!

速度検証

5000行、156列のExcelデータ(3.12 MB)で読み込み速度の検証をしました。

使用アクティビティは「範囲を読み込み」です。

#設定読み込み完了時間
「表示行のみ」のチェックあり
「読み込み値の書式」が「(null)」
00:53:57
「表示行のみ」のチェックなし
「読み込み値の書式」が「(null)」
00:55:32
「表示行のみ」のチェックあり
「読み込み値の書式」が「RawValue」
00:39:08
「表示行のみ」のチェックなし
「読み込み値の書式」が「RawValue」
00:00:03

検証結果

結論、④の設定が圧倒的に速いです。

速度改善が凄まじく、爆速で読み込みが完了しました・・・!!

プロパティの設定はめっちゃ重要ですね!!

#①デフォルト(表示行あり、読み込み値null)

#②表示行なし、読み込み値null

#③表示行あり、読み込み値RawValue

#④表示行なし、読み込み値RawValue

【UiPath StudioX】シーケンスの代わりのアクティビティを紹介

Studioで開発していたら「シーケンス」は必ず使いますが、StudioXでは「シーケンス」がありません・・・

え、「シーケンス」ないとかStudioX無理・・・って方向けの記事です。

はい、確かに検索しても出てこないですね・・・

どうやらアクティビティ名がStudioXでは変更されているみたいです。

その名は「グループ」

https://docs.uipath.com/ja/activities/other/latest/workflow/sequence

「シーケンス」と機能は全く同じです。

【UiPath StudioX】StudioからStudioXに切り替える方法

StudioからStudioXに切り替える方法を紹介します。

プロファイルを選択するだけです。

切り替え手順

手順①Studioを起動し、「設定」→「ライセンスとプロファイル」→「プロファイルを変更」をクリックする

手順②「UiPath StudioX」をクリックする

手順③再起動確認画面で「はい」をクリックする

手順④StudoXに切り替え完了

【UiPath】起動されたオブジェクトはクライアントから切断されました。の対応策

UiPathのExcel操作で以下のエラーに遭遇した方も多いのではないでしょうか?

RemoteException wrapping UiPath.Excel.ExcelException: 起動されたオブジェクトはクライアントから切断されました。 (Exception from HRESULT: 0x80010108 (RPC_E_DISCONNECTED))

連続でExcelを起動したり、処理速度が早すぎると発生するようですが、毎回エラーになるわけではないので対応策が分からない・・・

そんな方向けの記事となります。

対応策

プロジェクト設定で、Excelモダンの「Excelプロセススコープ」の設定を変更します。

既存のプロセスに対するアクションで「実行時の値」「デバッグ時の値」どちらも、

Excelを起動するたびに、既存プロセスは強制終了されるので、エラーが発生しなくなりました。

Delayやプロセスキルだとエラーが解消しなかったので、こちらの方法が私の中ではベストです。

【UiPath】連続するスペースを1つにまとめる方法

BizRobo!の関数で「連続するスペースを1つにまとめる」機能があるので、UiPathで実装する方法を紹介します。

やりたいこと

str = "aaa       iiii   u    eee"

↓連続する空白を1つにまとめる↓

str = "aaa iii u eee"

実装例

正規表現で実装しますので、「一致するパターンを置換」アクティビティで以下を設定します。

パターン ⇒ ” +”

置換後のテキスト ⇒ ” “

連続した半角スペースを1つの半角スペースに置換します。

実行結果

補足

全角スペースも対象の場合の正規表現は以下です。

パターン ⇒ [  ]+

【UiPath】マクロの実行方法(モダン)

モダンデザインでマクロを実行する方法を紹介します。

事前準備

実行するマクロファイルのコードは以下です。

メッセージボックスに「Zawanii」と出力します。

Sub Example1()
    Dim msg As String
    msg = "Zawanii"
    MsgBox msg
End Sub

全体フロー

マクロ実行アクティビティ

モダンデザインでマクロを実行するアクティビティは「スプレッドシートのマクロ実行」です。

元のブック

⇒「Excelファイルを使用」の参照名

マクロ名

⇒実行するマクロ名

実行結果

【UiPath】プロジェクト名の取得方法

プロジェクト名の取得方法を紹介します。

全体フロー

手順①project.jsonを読み込み

「テキスト ファイルを読み込み」でproject.jsonファイルを読み込みます。

プロジェクト名は「Zawanii」です。

手順②json形式に変換

①で読み込んだ変数を「JSONを逆シリアル化」でjson形式に変換します。

手順③プロジェクト名を取得

②で変換したjson形式の変数から「name」を取得します。

手順④出力結果

プロジェクト名が出力されます。

補足

プロジェクトの説明を取得したい場合は「description」を指定します。

studioのバージョン取得は「studioVersion」です。

【UiPath】本番環境で動作しない時に確認すること

開発環境だと問題なく動くのに、本番・運用環境だとエラーになる・・・

このような場合ロボのワークフローではなく、環境周りが主な原因となります。

エラー解消に向け確認すべきポイントを4つ紹介します!

①アクセス権限の付与

本番環境から、対向システム、共有ドライブなどにアクセスできるか確認します。

②アプリのインストール

必要なアプリ、拡張機能などがインストールされているか確認します。

また設定も開発環境と揃えます。

(例)Chromeのダウンロード設定が開発環境と同じか

③解像度を合わせる

開発環境と本番環境の解像度を同じにしましょう。

解像度が異なると、画像認識アクティビティを利用している場合はエラーになる確率が上がります。

④PCのスペックを同じにする

CPU、メモリなどのスペック差があることで、処理速度の違いによるエラーなどが発生することがあります。

スペックを揃えるのが難しい場合は、処理前後の待機時間を見直しましょう。

【UiPath】対応OSの確認方法

project.jsonファイルで確認することができます!

確認方法

project.jsonファイルをメモ帳で開き、”targetFramework”の値が対応OSとなります。

下記の画像はWindowsプロジェクトです。

クロスプラットフォームは「Portable」、レガシーは「Legacy」と表示されます。

【UiPath】特定の文字列と文字列の間を抽出する

特定の文字列と文字列の間の文字列を、正規表現を使用しないで抽出する方法を紹介します。

例①として、”2018年9月2日”という文字列から、”月”と”日”の間の”2“だけを取得します。

例②として、”ABCDEFGHIJKLMN”いう文字列から、”C”と”L”の間の”DEFGHIJK“だけを取得します。

正規表現を使用した方法は以下の記事で紹介しています。(以下の記事の方がおすすめ)

【UiPath】特定の文字列と文字列の間を抽出(正規表現)

①特定の文字列と文字列の間を抽出する

変数strに文字列”2018年9月2日”を代入します。

処理を2回に分けます。

①先頭から”月”までの文字”2018年9月”を削除します

str.Remove(0,str.IndexOf(“月”) + 1)

Remove関数を使用し、先頭(0)から”月の”文字位置(6文字目) + “月”自体の文字数(1文字)を削除します。

結果先頭から7文字削除され、”2日”だけになります。

②”日”以降の文字を削除します

str.Remove(str.IndexOf(“日”))

Remove関数を使用し、”日”の文字位置(1文字目)以降を削除します。

※文字列の先頭は0文字目 2⇒0文字目 日⇒1文字目

結果1文字目以降が削除され、”月”と”日”の間の”2″だけ取得できました。

②特定の文字列と文字列の間を抽出する

変数strに文字列”ABCDEFGHIJKLMN”を代入します。

処理を2回に分けます。

①先頭から”C”までの文字”ABC”を削除します

str.Remove(0,str.IndexOf(“C”) + 1)

Remove関数を使用し、先頭(0)から”Cの”文字位置(2文字目) + “月”自体の文字数(1文字)を削除します。

結果先頭から3文字削除され、”DEFGHIJKLMN”だけになります。

②”L”以降の文字を削除します

str.Remove(str.IndexOf(“L”))

Remove関数を使用し、”L”の文字位置(8文字目)以降を削除します。

※文字列の先頭は0文字目 

結果8文字目以降が削除され、”C”と”L”の間の”DEFGHIJK”だけ取得できました。