参照元となるExcelが動的な場合の設定方法

UiPathを触り始めて数か月の者です。

今回質問させていただきたいのが、
「Excel アプリケーションスコープ」にて参照するファイルがその都度異なる場合、
どの様に設定を行えば良いかご教授頂きたいです。
また、書き込みを行うExcelファイルですが、台帳の様なものなので、
書き込みの開始場所に関しても、
適切な設定を行わないといけないと感じています。

今現在考えているフローとしましては、
下記のような構想となります。

ーーーーーーーーーーーーーーーーーーーーーーーーー
「Excel アプリケーションスコープ」
参照したいファイルを読み込むのだが、ファイルが動的な為、参照パスをどうしたら良いかで止まっている。
※申請をExcelでその都度作成してもらう形になっているので、参照するファイルが常に異なる形になります。
また1つの申請につき、1つのファイルを作成しています。

「範囲を読み込む」

datatableを作成

「繰り返し(データテーブルの各行)」
一応、このアクティビティを入れてますが必要ない気がしています。

「Excel アプリケーションスコープ」
こちらで呼び出すファイルは、常に固定となっており、台帳のような存在です。

「範囲に書き込み」
台帳にdatatableで読み込んだ値を書き込んでいきます。
ここで、台帳のExcelは作業をする度に書き込まれていくので、
どこから書き込みを行うかの設定も工夫が必要だと考えています。

↓↓↓
(参照元ファイルが格納されている所に、他にも申請Excelファイルがある場合は、上記と同じ工程を繰り返す。)

「Excel アプリケーションスコープ」

etc.
ーーーーーーーーーーーーーーーーーーーーーーーーー

こんにちは

要件次第ですが、
入力用のフォルダを定めておいて、System.IO.Directory.GetFiles メソッドで
対象ファイルの一覧を取得し、それをForEachで各ファイルを対象とする

あるいは、ファイル選択アクティビティでユーザーに選択してもらう。

等がまずは考えられます。

既存のデータを範囲読み込みで読み込んでDataTableを取得すると、
DataTable.Rows.Countで行数を取得することができます。
必要なオフセット量を加味して、追加で書き込み開始セルを算出
すれば良いかと思います。

あるいは書式などが重要でないのであれば、範囲を追加アクティビティを
使える場合もあります。

imageでいただいたものを真似て、
参照元となるファイルだけがあるInput用のフォルダを作成してみたのですが、
コンパイルエラーが起きてしまい正常に動きません。。
どの様な設定を行っているのかサンプルなどをいただくことは可能でしょうか。
この機能を使用できるようにしたく考えており、今回の構想しているフローの最後に同じ「ForEach」機能を使って、
Input済みフォルダーへの退避も自動化しようと考えています。

こちらは、都度追加記載されていくので、毎回セルの書き込み開始場所が異なるのですが、
DataTable.Rows.Countで行数を取得するとその書き込みのある所までの行数を取得し、
その後に書き込みを行っていく設定なのでしょうか。
今現在考えているのは、条件文を使用して、空白のある所を正とし書き込み、埋まっている所はスルーの様な分を書きたいと考えています。
しかしながら、条件文の記載方法も確と理解できていないのでもしお分かりなら教えて頂きたいです。

こんにちは

こちらエラー内容の画像を共有いただけますか?
なお、ありがちなのはForEachのTypeArgumentがString型になっていなケース等です。

こちらは、都度追加記載されていくので、毎回セルの書き込み開始場所が異なるのですが、
DataTable.Rows.Countで行数を取得するとその書き込みのある所までの行数を取得し、
その後に書き込みを行っていく設定なのでしょうか。
今現在考えているのは、条件文を使用して、空白のある所を正とし書き込み、埋まっている所はスルーの様な分を書きたいと考えています。
しかしながら、条件文の記載方法も確と理解できていないのでもしお分かりなら教えて頂きたいです。

やり方はいろいろありますし、また要件によってもことなるので一概には言えないですね。
もっとも単純には
表全体を範囲読み込みでDataTableとして読み込んで、そのDataTableの行を追加、
それを表全体として書き戻す方法もあります。
個別に書き込むのであれば、前述の方法で、書き込むアドレスは自身で計算しながら行います。

いずれにしてもダミーでも良いので、もう少し要件を具体的に記載いただいた方が、
より具体的な方法について記載できると思います。

今しがた作成したものを添付しようとしたのですが、
新規ユーザーの為、行うことができませんでした。

こちらに関しましては、
まず代入の時点で「System.IO.Directory.GetFiles(”DataFolder”,”*.xlsx”)」の値を入れると、
エラーが出てしまっております。

まずは、難しそうなIF文よりもこちらを使用してみたいと思います。
要件としましては、Excelからヘッダー以外の値を全て取得し、出力先のExcelへ前回の記載した続きから記載できるようにできればと考えております。

こんにちは

左辺はString[] (String配列型)の変数になりますので、これを変数パネルで作成してみてください。(Array Of [T]から選択します。)

まずは、難しそうなIF文よりもこちらを使用してみたいと思います。
要件としましては、Excelからヘッダー以外の値を全て取得し、出力先のExcelへ前回の記載した続きから記載できるようにできればと考えております。

こちらで要件を満たせそうなら、この方法が一番簡単かと思います。

1 Like

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