シートの存在確認(複数)し、ファイルを分割する


1枚目画像にて設定し、ループしている複数のファイルを
シートの存在確認をし、シートが複数ある場合はファイルを分割、
ない場合は何もしないように作りたいです。

image
複数ないのが確定している場合は2枚目画像のようなやり方で存在確認ができると思うんですが、複数ある時とない場合で状況が都度変わる場合はどのように存在確認をし、条件分岐でファイルを分割すればいいのか教えていただきたく
よろしくお願いいたします。。

【追記】
1枚目画像の全てのファイルを確認するまでループ のところまでは動作確認済みです

ブックの全シート取得アクティビティの出力のリストの要素数で判断すれば良いかと思います。

1 Like

ありがとうございます。
abc20240911.xlsx が仮としてあって3シートあった場合

ファイル名_連番となるように
元あったabc20240911.xlsx とabc20240911_1.xlsx abc20240911_2.xlsx の3つができるように作りたいのですが、どのようになりますでしょうか?

ここまでのフローは以下のようになっております
termas_file_path=ループするファイルのフルパス

上記要件を実現するとすれば、例えば以下の様になると思います。

サンプル
Sample20240911-2.zip (19.3 KB)

ありがとうございます。
頂いたサンプルをそのまま動かして見たんですが、いまいちよくわからず、、、

作り的にdata.xlsxの全シートを取得して新しくできるファイルに_連番がつくようにし
繰り返す~みたいな感じと受け取りました。
実際動かしたのですが、新しくファイルなど作成されずどの状態で動かすなど条件ありますでしょうか? また、data_org.xlsxがある理由が分からないため教えていただきたいです。

まず

分割の対象ファイルはdata.xlsxにしていますが、一度実行すると内部のシートは1つになるので、2回目以降は分割(?)できなくなります。それを元に戻すため用に置いているものです。処理には直接関係ありません。

実際動かしたのですが、新しくファイルなど作成されずどの状態で動かすなど条件ありますでしょうか?

data_1.xlsx 等生成されていませんでしょうか?

作り的にdata.xlsxの全シートを取得して新しくできるファイルに_連番がつくようにし
繰り返す~みたいな感じと受け取りました。

ちょっと意図が良くわかりませんが、上記の処理としてはシート数分、元のファイルをコピー→その中の不要なシートを削除しています。


頂いた画像にあるじょうたいにある状態でそのまま動かしてみたのですが
ファイルは追加で作成されていない状態です。

妙ですね。手元の環境では上記アップしたものをダウンロード→解凍して実行すると以下になりますが。
image

実行時Studioのログはどのようになっていますでしょうか?

パッケージ管理のバージョンが異なっており上手く動作していないだけでした。
ありがとうございます!!!!!

以前フォルダー内のファイルを繰り返す方法や、日付取得について教えて頂いたと思うんですが、

image
階層的には20240911までがフォルダになり、その中にExcelファイルが複数あるようなファイルの持ち方になっています。画像のように教えて頂いた所まで取得できたため
【繰り返し(フォルダー内の各ファイル)】アクティビティを使って上手く行くと思ったんですが、
このアクティビティ後にメッセージボックスを置いても画像のようにフォルダまでの階層しか返ってきません。

自分の認識では中に入れさえすればそこからはファイル名も入ったフルパスがメッセージボックスとして返ってくると思っていたのですが、これは間違って認識していますでしょうか?

どのように組まれているか良くわかりませんので、ワークフローのスクリーンショット等共有できませんでしょうか?

3枚目画像は20240911フォルダの中身のファイルになります。
このファイルを順番に上から見て行って、sheetが複数ある場合は
連番をつける流れが先程説明した内容です。

ご自身が指定したフォルダ名をメッセージボックスで出力しているので、当然ながらフォルダが出力されます。イテレートされた各アイテムはCurrentFileにFileInfo型で入っていますでのこちらを参照してください。

ありがとうございます。
currentfileで返したところファイル名が返ってきました。

全ブックのシート名を取得するためにExcelファイルを使用アクティビティを使っているのですが、言われた通りterms_file_pathの変数にはフォルダまでしか入っておりません。
これは作り方としては問題ないんでしょうか?

エクセルファイルを使用アクティビティのExcelファイルプロパティにフォルダ名までの情報を渡しても問題ないか?という趣旨のご質問でしょうか?
そうであれば、ファイル名しか受け付けませんので、フォルダ名だけでは例外となります。

お渡ししたサンプルのExcelProcessScopeのすぐ内側に繰り返し(フォルダー内の各ファイル)アクティビティを設置し、

filename = CurrentFile.FullName

としてやれば、そのまま動くと思います。

kousin.xaml (26.2 KB)

ありがとうございます。
今本番環境にサンプルの内容を加え、このようにRPAを作成してみたのですが、

重複してないしてない所は画像のように0がついたExcelファイルが出来てしまいました。
シートが複数ない場合を0として作られていると思うのですが、複数ない場合は何もせず
複数ある場合のも-0,-1となる用するにはどこに変更を加えればよろしいでしょうか?

上記POSTで

お渡ししたサンプルのExcelProcessScopeのすぐ内側に繰り返し(フォルダー内の各ファイ>ル)アクティビティを設置し、

filename = CurrentFile.FullName

としてやれば、そのまま動くと思います。

のようにお伝えしましたが、そのようになっていないようです。
どのようにしたいですか?
自身で設計したいのであれば、そのロジックが他者にはわかりませんので、各処理の意図を明確にいただく必要がるかと思います。

ここのみで上記2行が抜けておりました。
エラーが出たままですみません。あまり理解できておらず、このように配置するという意味でしょうか?
kousin.xaml (29.0 KB)

正解例をそのまま送り返して頂けると非常に助かります。。。

申し訳ないですが、添付いただいているファイルは各アクティビティの配置意図がよくわかりませんので修正は困難です。

意図としては先ほどUpしたファイルを以下の通り

1.繰り返し(フォルダー内の各ファイル)アクティビティをエクセルプロセススコープの直下に配置し、元々の中身をすべてこの中に持ってくる。フォルダ名を処理したい場所に設定する。

2.代入アクティビティの右辺を CurentFile.FulleName に変更

とすれば動作すると思います。

Main.xaml (21.6 KB)