はじめに
UiPathで、ワイルドカードを使用して単一のファイルの存在確認・ファイルパス取得・ファイル名取得・ファイルコピーを行う方法を紹介します。
UiPathの「ファイルの存在を確認」アクティビティや「ファイルをコピー」アクティビティはワイルドカードには対応していないため、その代替として使用することができます。
ワイルドカードを使用したファイルの存在確認
'// 構文1
'Dir("ワイルドカードを含むファイルパス") <> ""
Dir("C:\work\file*.txt") <> ""
'// 構文2
'Directory.GetFiles("フォルダパス","ワイルドカードを含むファイル名").Length > 0
Directory.GetFiles("C:\work","file*.txt").Length > 0
ワイルドカードを含むファイルパスから実際のファイルパス取得
「フォルダパス」と「ワイルドカードを含むファイル名」を次の構文に渡します。
'Directory.GetFiles("フォルダパス","ワイルドカードを含むファイル名")(0)
Directory.GetFiles("C:\work","file*.txt")(0)
ワイルドカードを含むファイルパスから実際のファイル名取得
'Dir("ワイルドカードを含むファイルパス")
Dir("C:\work\file*.txt")
ワイルドカードを使用したファイルコピー
応用例として、ワイルドカードを使用したファイルコピーの方法を紹介します。汎用的に使用できるよう、引数を使用するワークフローの形式にしています。
引数
以下のString型の引数を用意します。
strRawFileName:ファイル名(ワイルドカードにも対応)
strSourceDirPath:コピー元フォルダパス
strTargetDirPath:コピー先フォルダパス
変数
以下のString型の変数を用意します。
strFileName:実際のファイル名
strSourceFilePath:コピー元ファイルパス
strTargetFilePath:コピー先ファイルパス
ワークフロー
'参考)VBAのコードで書くと以下のようなイメージになります。
Sub CopyFile_with_wildcard(ByVal strRawFileName As String, _
ByVal strSourceDirPath As String, _
ByVal strTargetDirPath As String)
Dim strFileName As String
Dim strSourceFilePath As String
Dim strTargetFilePath As String
If Dir(strSourceDirPath & "\" & strRawFileName) <> "" Then
strFileName = Dir(strSourceDirPath & "\" & strRawFileName)
strSourceFilePath = strSourceDirPath & "\" & strFileName
strTargetFilePath = strTargetDirPath & "\" & strFileName
FileCopy strSourceFilePath, strTargetFilePath
Else
'ファイルが存在しない場合の処理
End If
End Sub
おわりに
業務でファイル名の末尾のみ変更になった単一のファイルを操作することが多いため、本記事の処理は重宝しています。
皆さんの業務のお役に立てると幸いです。