ファイル名の取得(部分一致 *複数個所)について

お世話になっております。
ファイル名の取得(部分一致 *複数個所)についてご教示いただけますと幸いです。
※以下文章について、UiPathフォーラムの仕様と思われますが 式の中の *が表示されない為代わりに※を記載しております。お手数ですがお読み替えください。

取得したいファイル名:
※A_B※.xlsx
※↑「A_B」と「.xlsx」を含むファイル名を取得したい 基本フォルダ内に「A_B」と「.xlsx」を含むファイルが1つのみ存在する想定
※↑実際は「A」と「B」の部分は「繰り返し(各行)」で値を取得します

試行した内容:
繰り返し(各行) の本文に「代入」アクティビティ格納
変数 = Directory.GetFiles(“パス”,“※” + row(“A”).ToString + “_” + row(“B”).ToString + “※.xlsx”)

発生したエラー:
式 “Directory.GetFiles(“パス”,”※" + row(“A”).ToString + “_” + row(“B”).ToString + “※.xlsx”)" の処理中にコンパイルエラーが発生しました。
型 ”String” の1次元配列’ の値を ’String’ に変換できません。

どのような原因で上記のようなエラーが発生しておりますか。
仕様を把握できておらず恐れ入りますがご教示いただけますと幸いです。

エラーから推測するに、格納先の「変数」がString型になっているのではないでしょうか。
Array[String]型を選択してみてください。

1 Like

Ueda.iさん
ご教示いただきありがとうございます。
※□は半角の[]に読み替えください。
変数の型を「String」→「String」に変更(Array of [T]を選択した後に「String」を選択)したところエラーが消えました。

ただ、変数にファイル名が取得できているか確認する為に「代入」の後に「メッセージボックス」アクティビティを配置したところ「System.String」が表示されました。

※フォルダ内にrow(″A″).ToStirng + ″_″ + row(″B″).ToString と″.xlsx″が含まれるファイルが存在する事は確認できているのですが
何が原因でしょうか…?
「代入」アクティビティの左辺値(Directory.GetFiles(″〜)の中身が間違っておりますかね…
部分一致のファイル名取得方法についてご存知でしたらご教示いただけますと幸いです

配列の中身を確認するには、添え字を付けてあげる必要があります。
「変数(0)」とすると配列の1番目の要素を取得できます。

また全ての要素を確認するには、繰り返し(コレクションの各要素)を使用してループしてください。

image

1 Like

Ueda.iさん
ご教示いただきありがとうございます。
メッセージボックス:
変数(0).ToString
を試行したところ、パス&ファイル名が表示されました。

Directory.GetFilesはファイル名を取得する式だと思っておりましたので、パスまで表示された点は疑問が残りますが、パスの部分を削って(先頭から〜文字を削って)ファイル名を完成させたいと思います。
お忙しい中ご確認、ご回答いただきありがとうございました。

1 Like

すでに解決されているとのことで、補足情報として書き込みさせていただきます。

Directory.GetFiles は、指定した条件に一致するファイルの一覧を、パスを含めて返す仕組みになっています。

取得された結果からファイル名の部分のみ抽出したい場合は、 Path.GetFileName を使用するとスマートです。
例えば取得されたファイルパスが filePath であったとすると、代入アクティビティで下記のようにすれば、fileNameにファイル名の部分のみ抽出できますので、お試しください。

fileName = Path.GetFileName(filePath)
1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.