ファイル名毎にカウントし、集計表にカウント数を転記する方法。

Uipath初心者です。皆様のお力お借りしたく質問させて頂きます。
まず、どういったプログラムを作りたいのか説明致します。

ある特定のフォルダ内に格納されるExcelファイルをタイトル毎にカウントし、それを管理する別のExcelファイルにあらかじめピックアップされたタイトルの隣に集計したカウント数を書きこむといったものです。

フォルダ内格納ファイルのタイトルは【繰り返しコレクション(system.IO.Directory.GetFiles(“指定するパス”,”*.xlsx”,searchoption.AllDirectories)】にて取得することは出来たのですが、その後集計ファイルに一致したタイトルの隣にカウント数を書き込む処理方法が思いつきません。
集計表に対してカウント数をどのタイトル項目に書き込むのかという認識をどうやって持たせられるのでしょうか?

内容が整理されてなく、伝わりづらい文章で申し訳ありません。
アドバイス頂けたら幸いです。宜しくお願いします。

こんにちは

やり方はいくつかあるかと思いますが、Dictionary使うとこんな感じかと思います。

SampleGetFiles.zip (8.0 KB)

ご回答ありがとうございます。
実現内容のシンプルさとは裏腹にこのように複雑なプロセスが出来上がるのですね。驚きです。

陽一さんの作ってくださったプロセス拝見しましたが、見たことのないようなメソッドや式を使われており、お恥ずかしながら、私では理解することが難しいです。
もし、手間で無ければプロセスの解説頂けないでしょうか?
宜しくお願いいたします。

こんにちは

あくまで一例ですので、このやり方にこだわる必要はないかと思いますが、簡単に説明します。

まずDictionaryが何かを理解する必要があるかと思います。
一般的には連想配列と呼ばれるものの類になりますので、ネットで検索いただければと思います。

このサンプルは2つのループから構成されています。
1つ目のループはファイル名をカウントするためのループです。
具体的にはGetFilesで取得したファイル名配列をループしています。

まずGetFilesで取得したデータはフルパスで格納されているのでSystem.IO.Path.GetFilenameでファイル名のみを抽出します。

そのファイル名をDictionaryのキー(=連想配列の添え字)、値としてファイル名の出てきた回数を格納する設計にしています。
そのため、まずDictionaryにキーが存在するかの確認をContainsKeyメソッドで行い、キーがないときは初回ということで、値として1をセットします。キーがある場合は、すでに何らかの値が入っていますのでそれを+1します。
このループをまわすことによって、たとえば以下のようなDictionaryができます。

キー     値
"aaa.xlsx" → 1
"bbb.xlsx" → 3
"ccc.clsx" → 2

ここまでで集計自体はできているイメージです。

2つ目のループは集計した結果を、エクセルファイルへ格納する処理です。
エクセルのシートから、表内に記載されているファイル名を抽出し、先ほど作成したDictionaryを通じて値をセットしています。
ただし必ずしもエクセルの表中にあるエクセルファイル名が、先ほど検索したディレクトリ内にあるかわかりませんので、Key=ファイル名の有無をContainsKeyメソッドで確認し、キーがあれば集計した値、なければ0をエクセルシートに書き出しています。

いかがでしょうか?