レッスン16ファイルの移動

処理が終わったファイルをフォルダーに移動するには

データの参照先として利用したExcelのファイルなどを、処理完了後に別のフォルダーに移動してみましょう。UiPath Studioならファイル操作も簡単です。

パスを取得して[ファイルを移動]を使おう

データの読み書きやログの保存など、業務の自動化にはファイルを扱う処理が欠かせません。こうした処理に使うのが[ファイルを移動]アクティビティです。標準では1つしかファイルを移動できませんが、繰り返し処理を使うことで複数ファイルも移動できます。

ファイルの移動

指定したファイルを指定したフォルダーに移動できるアクティビティです。移動なので、元のフォルダーからファイルは削除されます。

処理が終わったファイルをフォルダーに移動するには(ファイルの移動) - できるUiPath

複数ファイルの移動

複数ファイルを移動したいときは、[繰り返し(コレクションの各要素)]と組み合わせて、ファイルの分だけ移動の処理を繰り返します。

処理が終わったファイルをフォルダーに移動するには(ファイルの移動) - できるUiPath

HINT特殊フォルダーのパスを取得できる

Windowsでは、[ドキュメント]や[ピクチャ] などのフォルダーが、「C:\Users\ユーザー名\」のように、ユーザーごとに個別に設定されます。このようなフォルダーを「特殊フォルダー」と呼びますが、特殊フォルダーは、ユーザーだけでなく、Windowsのバージョンなどによっても変化します。このため、ファイルを操作する処理では、たとえパスが変わっても問題なくワークフローを実行できるように配慮する必要があります。

UiPathStudioには[特殊フォルダーのパスを取得]アクティビティが用意されており、これを利用することで、実行環境ごとに異なる特殊フォルダーのパスを取得できます。

HINTこのレッスンで使う変数

このレッスンでは、次の変数を使います。ワークフロー内で登場する変数の用途を確認しておきましょう。fName変数については、後述のHINT「ファイルのコピー時は、ファイル名を忘れずに」で紹介します。

dName

型:GenericValue
用途:[ドキュメント]フォルダーのパスを格納する

fItems

型:Array of [T](String)
用途:フォルダ内のファイルのパスの一覧を格納する

fName

型:GenericValue
用途:絶対パスから取り出したファイル名を格納する

1つのファイルを移動する

移動したいファイルが1つだけのときは、[特殊フォルダーのパスを取得]と[ファイルを移動]の単純な組み合わせで処理が可能です。

処理が終わったファイルをフォルダーに移動するには(ファイルの移動) - できるUiPath

1[特殊フォルダーのパスを取得]を追加する

処理が終わったファイルをフォルダーに移動するには(ファイルの移動) - できるUiPath

2[特殊フォルダーのパスを取得]の変数を設定する

処理が終わったファイルをフォルダーに移動するには(ファイルの移動) - できるUiPath

3[ファイルを移動]を追加する

処理が終わったファイルをフォルダーに移動するには(ファイルの移動) - できるUiPath

HINTファイル操作関連のアクティビティ一覧

UiPath Studioには、ファイルを操作するためのいろいろなアクティビティが用意されています。

[ディレクトリを作成]
指定した場所に新しいフォルダーを作成します。
[パスの有無を確認]
パスが存在するかどうかを確認します。
[ファイルをコピー]
指定したフォルダーにファイルをコピーします。
[ファイルを作成]
新しいファイルを指定したフォルダーに作成します。
[削除]
指定したファイルを削除します。

HINTいろいろな特殊フォルダーのパスを取得できる

[特殊フォルダーのパスを取得]では、たくさんのフォルダーのパスを取得できます。主なものは次の通りです。

  • MyDocuments
  • Favorites
  • MyMusic
  • MyVideos
  • DesktopDirectory
  • ApplicationData
  • Cookies
  • Windows
  • System/SystemX86
  • ProgramFiles/ProgramFilesX86

処理が終わったファイルをフォルダーに移動するには(ファイルの移動) - できるUiPath

4ファイルのパスを指定する

処理が終わったファイルをフォルダーに移動するには(ファイルの移動) - できるUiPath

5保存先のパスを指定する

処理が終わったファイルをフォルダーに移動するには(ファイルの移動) - できるUiPath

6パスの設定が完了した

処理が終わったファイルをフォルダーに移動するには(ファイルの移動) - できるUiPath

HINTフォルダーを直接指定してもOK

ここでは、[ドキュメント]フォルダーにあるファイルを扱いましたが、[D:\data\sample1.xlsm]や[\\server\share\sample1.xlsm]など、フォルダーを直接指定することもできます。その場合は、手順4で[元ファイル]に直接パスを入力します。

HINT取得したパスとファイル名を組み合わせる

[ファイルを移動]では、移動するファイルを「C:\Users\ユーザー名\Documents\sample1.xlsm」のように、フォルダー名とファイル名を組み合わせた完全な形式で指定します。このレッスンでは、[特殊フォルダーのパスを取得]でフォルダー名を「dName」変数に格納していますが、含まれるのはパス(C:\Users\ユーザー名\Documents)だけなので、「+"\sample1.xlsm"」と追記して、「\」とファイル名を付加する必要があります。

HINT上書きオプションを指定できる

移動先に同名のファイルが存在するときは、手順6で[オプション]の[上書き]にチェックマークを付けることで、ファイルを上書きできます。

HINT式エディターを使うと編集が簡単

ここでは、パスの指定に[式エディター]ダイアログボックスを使っています。もちろん、[プロパティ]パネルの入力欄に、直接、指定しても構いませんが、「+」でパスとファイル名をつなげて生成するなど、複雑な文字列の入力には、[式エディター]ダイアログボックスを使った方が入力ミスを防げます。

HINT絶対パスと相対パス

ファイルやフォルダーを指定する方法には、絶対パスと相対パスという2種類の方法があります。絶対パスは「C:\Users\ユーザー名\Documents\UiPath\example\example.xls」のように、最上位の階層のドライブを基準に、目的のファイルやフォルダーまでのフォルダーを順番に記載する方法です。

一方、相対パスは、特定のフォルダー(例えばワークフローが実行されているフォルダー)を基準として、目的のファイルやフォルダーを相対的に記載する方法です。たとえば、exampleフォルダーに保存されているワークフローを実行している場合、同じファイルを単に「example.xls」と表記したり、現在のフォルダーを示す「.」を使って「.\example.xls」と表記できます。なお、1つ上の階層のフォルダーは「..」を使って表現できるため、exampleフォルダーを基準とした場合、「C:\Users\ユーザー名\Documents\UiPath\example2\example2.xls」を「..\example2\example2.xls」と表すこともできます。

複数のファイルをまとめて移動する

複数ファイルの処理は、若干の工夫が必要です。あらかじめ移動元のフォルダーにあるファイルの数と名前を取得しておき、ファイルの数だけ[ファイルを移動]処理を繰り返します。

処理が終わったファイルをフォルダーに移動するには(ファイルの移動) - できるUiPath

1[代入]を追加する

処理が終わったファイルをフォルダーに移動するには(ファイルの移動) - できるUiPath

2[代入]の変数を設定する

処理が終わったファイルをフォルダーに移動するには(ファイルの移動) - できるUiPath

3変数の型を変える

処理が終わったファイルをフォルダーに移動するには(ファイルの移動) - できるUiPath

4変数の型の種類を設定する

処理が終わったファイルをフォルダーに移動するには(ファイルの移動) - できるUiPath

HINT配列として格納する

ここでは、フォルダーに存在する複数のファイルを扱うため、ファイル名を格納するための変数を配列で用意する必要があります。変数の型で配列を示す[Array of [T]]を選択し、格納するデータ型に[String(文字列)]を指定しておきましょう。

5ファイルの一覧を取得する

処理が終わったファイルをフォルダーに移動するには(ファイルの移動) - できるUiPath

6繰り返し処理を設定する

処理が終わったファイルをフォルダーに移動するには(ファイルの移動) - できるUiPath

7[ファイルを移動]を追加する

処理が終わったファイルをフォルダーに移動するには(ファイルの移動) - できるUiPath

8元ファイルを指定する

処理が終わったファイルをフォルダーに移動するには(ファイルの移動) - できるUiPath

9保存先を指定する

処理が終わったファイルをフォルダーに移動するには(ファイルの移動) - できるUiPath

HINTVB.NETの関数を活用しよう

ここでは、VB.NETの関数を使って、フォルダー内のファイルの一覧を取得しています。「Directory.GetFiles()」を使って、「()」にフォルダーを指定すると、そこにあるファイルの一覧を取得できます。例えば、次の例では、フォルダーにある3つのファイルが、fItems配列に順番に格納されます。このため、fItems(0)のように番号(0から始まるので注意)を指定することで、格納されたファイル名を取り出せます。

処理が終わったファイルをフォルダーに移動するには(ファイルの移動) - できるUiPath

①fItems(0)→C:\Users\ユーザー名\Documents\data\address_list.xlsx
②fItems(1)→C:\Users\ユーザー名\Documents\data\sample1.xlsm
③fItems(2)→C:\Users\ユーザー名\Documents\data\test2.xlsx

処理が終わったファイルをフォルダーに移動するには(ファイルの移動) - できるUiPath

HINT[繰り返し(コレクションの各要素)]って何?

UiPath Studioには、繰り返し処理を実行するためのアクティビティがいくつか登録されています。[繰り返し(コレクションの各要素)]は、配列やリストなどのデータの各要素を繰り返し処理するためのアクティビティです。Excelから読み出したデータテーブルを処理するときに使う[繰り返し(各行)]とは別のアクティビティとなる点に注意しましょう。

HINT[.ToString]を忘れずに

[繰り返し(コレクションの各要素)]では、配列から読み出したデータを順番に[item]に格納します。この[item]に格納されたデータの型は不明であるため、そのままではファイル名として扱うことができません。[ファイルを移動]のプロパティに指定するときは、[item.ToString]と、忘れずにString型に変更しましょう。

HINTファイルのコピー時は、ファイル名を忘れずに

ファイルを移動ではなく、コピーしたいときは、基本的には[ファイルを移動]の代わりに「ファイルをコピー」を使うだけです。ただし、1つ注意すべき点がファイル名です。[ファイルをコピー]では、保存先の指定時に必ずファイル名も含める必要があります。[繰り返し(コレクションの各要素)]の[item]には、移動元のディレクトリ名とファイル名が含まれるので、ここからVB.NETの[Path.GetFileName()]を使ってファイル名だけを取り出し、[保存先]に指定します。

処理が終わったファイルをフォルダーに移動するには(ファイルの移動) - できるUiPath

処理が終わったファイルをフォルダーに移動するには(ファイルの移動) - できるUiPath

Pointパスの扱いに注意

UiPath Studioでファイルを扱うときに、最も注意しなければならないのがパスです。ロボットの作成環境と実行環境が同じときは、意識せずに済むこともありますが、作成したロボットを社内に展開し、さまざまな環境で動かすときは、実行環境ごとにパスが変わる可能性があることを常に意識する必要があります。どの環境でも動くように作成することを常に心がけましょう。

提供:UiPath

関連まとめ記事