はじめに
UiPathでプログラムを作成するときによく行うファイルコピー操作ですが、フォルダに対しても同じようにコピーをしたい!と思ったことはないでしょうか。
UiPathにはファイルコピーアクティビティが用意されていますが、フォルダコピーに対しては専用のアクティビティは用意されておらず、困った!という人も多いと思います。

「ファイルをコピー」アクティビティは存在するが、「フォルダ」をコピーするためのアクティビティは存在しない!
今回はUiPathでファイルと同じようにフォルダコピーをする方法をご紹介します!
実際にやってみましょう!
サンプルとして「コピー元フォルダ」をフォルダごと「コピー先フォルダ」にコピーするプログラムを作成します。

今回のプログラムでは.NET Frameworkから提供されている「FileSystem.CopyDirectory メソッド」を利用して作成します。
ディレクトリの内容を別のディレクトリにコピーするメソッドです。
パラメータとして「コピーするディレクトリ」と「ディレクトリの内容のコピー先の場所」を指定することで、ディレクトリの内容をコピーすることができます。
引用元 :https://docs.microsoft.com/ja-jp/dotnet/api/microsoft.visualbasic.fileio.filesystem.copydirectory?view=net-5.0
※ここでいう「ディレクトリ」とは「フォルダ」のことを指しています。
① 変数を設定する
まず「コピー元フォルダ」と「コピー先フォルダ」のフォルダパスを格納する変数を作成します。
ここでは、「コピー元フォルダパス」と「コピー先フォルダパス」の2つの変数を作成します。
変数「コピー元フォルダパス」には「コピー元」となるフォルダのパスをそのまま設定します。
変数「コピー先フォルダパス」には「コピー先」となるフォルダのパスに「コピー元」となるフォルダ名を追加して設定します。


そのため、「コピー元のフォルダ名」を「コピー先のフォルダパス」に追加しない場合、「コピー元のフォルダ」の中身だけが「コピー先のフォルダ」にコピーされます。
今回は「コピー元フォルダ」ごとコピーするプログラムを作成するため、変数「コピー先フォルダパス」に「\」と「コピー元フォルダ」の名前を追加しています。

② 「メソッドを呼び出し」アクティビティを配置する
次に「メソッドを呼び出し」アクティビティを配置します。
「メソッドを呼び出し」アクティビティを配置後プロパティを開き、以下3項目に値を設定します。
(他の項目は設定内容を変更する必要はありません。)
ターゲット型
ターゲット型に「Microsoft.VisualBasic.FileIO.FileSystem」を指定します。
型の一覧に表示されない場合は「型の参照」を押下し、「参照して.Netの種類を選択」ウィンドウにて「FileSystem」と検索すると設定することができます。

メソッド名
「FileSystem.CopyDirectory メソッド」を使うため、「CopyDirectory」を入力します。

パラメータ
「FileSystem.CopyDirectory メソッド」に必要な引数を「パラメータ」ウィンドウの上から順に設定します。
「FileSystem.CopyDirectory メソッド」は第1引数に「コピー元のフォルダパス」を、第2引数に「コピー先のフォルダパス」を設定する必要があるため、以下の順番通りに値を設定します。

コピー元のフォルダパスとコピー先のフォルダパスの記載する順番を間違えないように注意してください!
③ 実行する
以上でフォルダコピープログラムの準備は整いました!
正しくコピーされたことを確認するために、今回は「GetFilesメソッド」を使ってコピー先フォルダのファイルパス一覧を出力するよう、以下の処理を追加します。

実際に実行してみると、出力コンソールに「コピー先フォルダ」のファイル一覧が出力され、「コピー先フォルダ」にも「コピー元フォルダ」がコピーされたことが確認できました!


今回フォルダの中身はファイルだけでしたが、この方法であればコピー元となるフォルダのサブフォルダやサブフォルダの中身もすべてコピーすることができます!
フォルダコピーにお悩みの場合は、是非試してみてください!
まとめ
今回はアクティビティが存在しないフォルダのコピー方法についてご紹介いたしました!
「メソッドを呼び出す」アクティビティは.NET Frameworkで提供されているメソッドを使うことができるので、フォルダコピー以外にも様々な処理を行うことができます。
その他の様々な処理についても今後当サイトのブログで紹介していこうと思いますのでよろしくお願いいたします!