見出し画像

【UiPath】フォルダごとコピーする

UiPathには「ファイルのコピー」アクティビティはあるんですけど
「フォルダのコピー」ってないんですよね。
業務的にはフォルダのコピーってしょっちゅう使うので大変困ります。

「繰り返し」アクティビティを使って、1つずつファイルをコピーしていく方法もありますが、時間がかかるしめんどくさいので、フォルダごとコピーできるアクティビティっぽいものを作ろうと思います。

アクティビティがないものはどーする?

UiPathはVB.VETまたはC#を使って実際にコードを書くことができます。
もともとノーコードでプログラムしましょう!というツールなのですが、ないモノはしょうがない!しぶしぶコード書きます。

そんなときはアクティビティ「コードを呼び出し」を使います。

画像1

そして「コードを編集」ボタンを押して、実際にコードを書きます。
僕はVB.NETの方がなじみ深いのでそっちを使います。

↓↓↓ 書くコードはこんな感じ

'ディレクトリ"D:\コピー元フォルダ""D:\コピー先フォルダ"にコピーする
My.Computer.FileSystem.CopyDirectory("D:\コピー元フォルダ", "D:\コピー先フォルダ", _
   FileIO.UIOption.AllDialogs, FileIO.UICancelOption.DoNothing)

今回はフォルダのコピーのコードを紹介しましたが
このアクティビティを使えば、他にいろんなことできそうですね。

ただこのままだと、フォルダパスをハードコードしていることになるので
大変使いづらいし、変化に対応できないので危険です。
そこを解決しましょう。

引数を使う

以下の「引数を編集」ボタンをクリックします。

画像1

そんで、コピー元フォルダを表す変数(=FolderMoveBefore)と
コピー先を表す変数(=FolderMoveAfter)を作成します。

画像3

加えて、VB.NETのコードもこれらの変数を使えるように書き換えます。

My.Computer.FileSystem.CopyDirectory(FolderMoveBefore,FolderMoveAfter, _
   FileIO.UIOption.AllDialogs, FileIO.UICancelOption.DoNothing)


あとはUiPath側で変数を作って、「コードを呼び出し」側に引数としてパスするだけです。

①変数を作る

画像4

②上で作った変数にフォルダパスを入れる

画像5

③作った変数と「コードを呼び出し」内の変数を対応させる

画像6

これで「コードを呼び出し」アクティビティに変数を受け渡すことができました。

さいごに

UiPathってホント使いやすいし、分かり易いんですけど
たま~に欲しいアクティビティがなかったりするんですよね。

今までVB.NETってヤダなあ。
ノーコードでやりたいのになあ。となかなかコードを書くことに抵抗がありましたが、やってみると意外と大したことなかったなあという印象でした。

きちんとドキュメントを残したり、使い方を残せば社内の他のメンバーも使えると思うので、今後は積極的にVB.NETを勉強しようと思います。

いいなと思ったら応援しよう!

この記事が参加している募集