UiPath Excel VBAの呼び出し アクティビティ

2021年11月27日

(プロジェクト設定:モダンExcelの設定でクラシックを使う場合のアクティビティです)

「VBAの呼び出し」はマクロ(VBAのコード)が

単体でテキストファイルに保存されている場合に

それを起動するためのアクティビティです。

これにより既存のマクロ資産を有効活用することが可能です。

なお類似機能の「マクロを実行」アクティビティは

ブックとマクロが同じファイルの場合に使用しますが、

このアクティビティは別々の場合に使用します。

アクティビティの使い方

Excelの設定

事前にExcelの設定を確認する必要があります。

「ファイル-オプション」で「Excelのオプション」を開き、

「セキュリティセンター」より「セキュリティーセンターの設定」を開きます。

「ファイル-オプション」で「Excelのオプション」を開き、「セキュリティセンター」より「セキュリティーセンターの設定」を開く図解

「マクロの設定」より「VBAプロジェクトオブジェクトモデルを信頼する」をONにします。

「マクロの設定」より「VBAプロジェクトオブジェクトモデルを信頼する」をONにする図解

Uipathの設定

まず「利用可能」、「UI Automation」、「アプリの連携」、

「Excel」より「Excel アプリケーション スコープ」を

設置しブックのパスにVBAを動作させるファイルを指定します。

そして「Excel アプリケーション スコープ」の中に

「利用可能」、「UI Automation」、「アプリの連携」、

「Excel」、「処理」より「VBAの呼び出し」をドラッグします。

ここで指定するブックは通常ブック(xlsx)でも可能です。

マクロ有効ブック(xlsm)である必要はありません。

まず「Excel アプリケーション スコープ」を設置しブックのパスにVBAを動作させるファイルを指定する図解

そして必要なプロパティを設定していきます。

プロパティ設定のキャプチャ

追加で設定する必要のある項目は

「コードファイルのパス」と「エントリメソッド名」のみで

引数も戻り値もないVBAであればそれだけで動作します。

コードファイルの中身は↓のようになっています。

Public Function Main(address as string , value as string)
    Range(address).Value = value
    
    Main = "完了"
End Function

一つ目の引数に編集対象セルを指定し、二つ目の引数に設定値を指定します。

System.Collections.Generic.IEnumerable型変数で指定しますが、今回はリテラルで指定します。

{"A1","VBA実行"}

これによりA1セルにVBA実行と入力されます。

最後に戻り値として「完了」を返し、その戻り値を出力値プロパティのObject型変数に指定し

メッセージボックスで表示します。(他の方法ではObject型から型変換を行う必要があります)

メッセージボックスアクティビティのキャプチャ

このツールを空のブックに対して実行すると

一つ目の引数のセルに二つ目の引数の値が設定され

書き込み先ブックの結果キャプチャ

戻り値である"完了"がメッセージボックスに表示されます。

メッセージボックスのキャプチャ

注意点

変数名やメソッド名に日本語が混じっているとVBAが起動できない場合があります。

そうなった場合はVBAのコードを全て英数字に書き換えてみましょう。

実行エラーのキャプチャ

プロパティ

共通

表示名を設定します。

表示名のキャプチャ

表示名はデザイナーパネルに反映されます。

デザイナーパネル上の表示例のキャプチャ

複数ある場合はどのようなマクロを起動するかを記述すると良いですが、

通常表示ではコードファイル名とエントリメソッド名が表示されるため

それがどんな処理をしているかを反映した名前になっていれば

表示名は変える必要性は少なくなります。

入力

入力のキャプチャ
項目説明
エントリメソッドのパラメーターエントリメソッドに引数がある場合、
System.Collections.Generic.IEnumerable型で指定します。
引数の順番で指定します。
{"A1","VBA実行"}のようにリテラル(固定値)で
指定することも可能です。
エントリメソッド名実行するメソッド名を指定します。
コードファイルのパスVBAのコードが記述されたテキストファイルを指定します。
basファイルを指定していますが、
VBAのコードであればtxtなど他の拡張子でも構いません。

出力

エントリメソッドがFunctionの場合、処理結果(戻り値)が存在します。

その場合は受け取り用の変数をObject型で指定します。

Object型のままでは利用できないケースが多いため

適宜、型変換を行う必要があります。

出力のキャプチャ
受け取り用変数のキャプチャ

その他

UiPathのログに引数や変数の値が表示されるかを指定します。

機密性の高い情報を取り扱う場合にのみチェックする必要があります。

プライベートのキャプチャ

活用例

関連記事