UiPath

【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】特定の文字列と文字列の間を抽出する

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

「一致するパターンを探す」のプロパティを設定します。

[検索対象のテキスト]に対象文字列を設定します。

⇒ 2018年9月2日

[パターン]に正規表現の値を設定します。

[結果]に括弧を除いた文字列を格納する変数を設定します。

⇒ result

メッセージボックスに表示するため、文字列に変換します。

実行結果

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

「一致するパターンを探す」のプロパティを設定します。

[検索対象のテキスト]に対象文字列を設定します。

⇒ ABCDEFGHIJKLMN

[パターン]に正規表現の値を設定します。

[結果]に括弧を除いた文字列を格納する変数を設定します。

⇒ result

実行結果

【UiPath】環境変数を取得する

環境変数を取得する、「環境変数を取得」アクティビティの使い方を紹介します!

環境変数を設定するだけで、使い方は簡単です。

使用アクティビティ

UiPath.Core.Activities.GetEnvironmentVariable

サンプルフロー

変数「TEST」の値、「testだよー」をメッセージボックスに出力します。

[名前]に環境変数を設定します。

出力値には文字列の変数を設定します。

実行結果

【UiPath】「キーボード ショートカット」の使い方

クラシックデザインの「ホットキーを押下」(Send Hotkey)に代替するアクティビティが、モダンデザインだと「キーボードショートカット」です。

UI 要素にキーを送信する点は同じですが、

使い方の説明をします。

キーボード ショートカットの使い方

①「アプリケーション/ブラウザーを使用」内に配置

「アプリケーション/ブラウザーを使用」内に配置する必要があります。

今回はメモ帳にキーボード操作を実行します。

②キーの設定

必須で設定が必要なプロパティは[キーの組み合わせを送信]のみです。

キーの設定方法は3つあります。

  • ショートカットを記録
  • 複数のショートカットを記録
  • ショートカットを手動で追加

ショートカットの記録は、レコーディング機能を使ってキーを設定します。

ショートカットを手動で追加」を選択すると、キーが表示されるので対象のキーを選択、または入力します。

「Ctrl」の選択と「v」の入力をし、[追加]をクリックします。

[キーの組み合わせを送信]【Ctrl+V】が設定されました。

設定は以上です。

サンプルフロー

クリップボードに設定した値を、メモ帳に「キーボードショートカット」で「Cntrl+V」を実行し、貼り付けます。

実行結果

【UiPath】クリップボードの操作方法

クリップボード操作に必要なアクティビティや使い方などを紹介します!

クリップボードに設定

クリップボードに値を設定するアクティビティです。

「Ctrl」+「C」と同じ意味です。

プロパティ[テキスト]に文字列を設定します。

コピペの方法

コピーは上記で完了なので、貼り付けを「キーボード ショートカット」で実装します。

メモ帳にクリップボードに設定した値を貼り付けます。

実行結果

クリップボードから取得

クリップボードの値を取得するアクティビティです。

プロパティ[結果]に変数を設定するだけOKです。

クリップボードの値を取得し、メッセージボックスに出力

実装は以下の通りです。

実行結果