文系・非エンジニアのRPA日記

友達から頼まれたことがきっかけでRPAに取り組むことになり、なんだかはまってしまった人のブログです。調べたけどよくわかんなくて何とか解決できた内容を載せています。ほかにちゃんとした説明があったり、間違っているとかおかしいこと書いてたらすみません。

【UiPathメモ】これがほんとの(?)「ファイル名だけ取得」(初心者の方へ)

こんにちは。

ふとしたきっかけからRPA(ロボットによる業務自動化=Robotics Process Automation)を趣味で始めることになった、文系・非エンジニアのハリーです。

使用しているのはUiPathです。もちろん初心者です。

 

このブログでは、僕と同じように検索でわからないことを調べる方のために、そして、僕のメモのために更新していきたいと思います。

UiPathの基本的な使い方を知りたい方や、そもそも何それ? という方は、スルーしていただくか、他の記事をご参照ください。

 

やりたいこと:「ファイル名だけ、しかもExcelのだけを取得」

第一回目は、僕がどれだけ検索してもよくわからなかった「ファイル名だけ取得」です。

やりたいことは、単純に

「特定のフォルダにあるファイルの、ファイル名(ここではExcelファイルだけ)を取得して

それをメッセージボックスに表示する」

です。

 

結論

f:id:Harryike:20190621232219p:plain

Activity

f:id:Harryike:20190621232509p:plain

実行結果

 

やったこと

アクティビティから

 

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日越しで、色々やってみてたどり着きました。

不思議と、これという答えを書いている記事がなくて、素人の僕が書きました。

もしかしたらおかしいことを言っているのかもしれません。

なので、ご参考程度にお願いします。

ちなみに、できたときは達成感半端なかったです!