【UiPathメモ】これがほんとの(?)「ファイル名だけ取得」(初心者の方へ)
こんにちは。
ふとしたきっかけからRPA(ロボットによる業務自動化=Robotics Process Automation)を趣味で始めることになった、文系・非エンジニアのハリーです。
使用しているのはUiPathです。もちろん初心者です。
このブログでは、僕と同じように検索でわからないことを調べる方のために、そして、僕のメモのために更新していきたいと思います。
UiPathの基本的な使い方を知りたい方や、そもそも何それ? という方は、スルーしていただくか、他の記事をご参照ください。
やりたいこと:「ファイル名だけ、しかもExcelのだけを取得」
第一回目は、僕がどれだけ検索してもよくわからなかった「ファイル名だけ取得」です。
やりたいことは、単純に
「特定のフォルダにあるファイルの、ファイル名(ここではExcelファイルだけ)を取得して
それをメッセージボックスに表示する」
です。
結論
やったこと
アクティビティから
1 「繰り返し(コレクションの各要素)」を配置
2 要素欄: itemはそのまま
3 コレクション欄
Directory.GetFiles("パス名","*.xlsx")
4 本体に「メッセージボックス」を配置
5 メッセージボックス欄
Path.GetFileName(item.ToString)
※ 変数・プロパティの設定は特に無し
解説
たったこれだけのことだったのですが、よく理解していない僕はなかなかわからず、検索しても「パス名取得(フルパス)」はあるけど、「ファイル名だけ(しかも特定ファイル名だけ)」は出て来ず、苦労しました。
色々な方の記事を組み合わせて、こうかな? こうかな? と繰り返していくうちにようやくたどり着きました。
ポイントは
Directory.GetFiles("パス名")だけでやると余計なものがくっついたりうまく表示されない。
Path.GetFileName("パス名")だけでは、Excelファイル(しかもワイルドカード使用)が指定できない。
したがって、2つをうまく組み合わせて
Directory.GetFiles("パス名", "*.xlsx")で「このフォルダにある、Excelファイルが欲しいのよ」と伝えます。
また、この時「繰り返し」の機能でitemは変数となります(これができるまで、実はよくわかってなかった…)。
なので、次のメッセージボックスでitemをそのまま利用して
Path.GetFileName(item.ToString)
と、文字列に変換してメッセージに出力しています。
経緯
これがやりたかったのは、Excelファイルを自動で加工した後に、そのファイル名を使って自動メール送信をしようとしたら上手くいかなくて・・・
結局1日越しで、色々やってみてたどり着きました。
不思議と、これという答えを書いている記事がなくて、素人の僕が書きました。
もしかしたらおかしいことを言っているのかもしれません。
なので、ご参考程度にお願いします。
ちなみに、できたときは達成感半端なかったです!