範囲に書き込みでExcelのブック上に複数シート作成したい

Excelファイルに関連する作業で、
フィルタリング結果をシートわけして保存をしたい件がありご相談をさせていただきます。
初心者のため、長文となりますが、ご容赦ください。

イメージとしては、都道府県名が入った列があるExcelファイルを、
都道府県名でフィルタし、結果を都道府県名シートに分け、1つのブックに保存する、
というものです。

実際に作成したワークフロー内では、
「繰り返し各行」のExcelアプリケーションスコープに「範囲を書き込み」を配置し、
・ブックのパスを指定(固定ファイル名のExcelファイルを指定)
・シート名は、フィルタリングで利用した要素名を指定
に変えた結果、シートを1つ追加したところで、
「範囲に書き込み: セル A1 から開始するデータ テーブル DataTable に書き込めませんでした。」
でエラーとなりました。

なお、フィルター結果を都道府県名別ファイルにするという処理は、Excel、CSVともに出来ましたが、
初心者のため、各種資料をWeb等で探しながら作成、経験不足でもあるため、
フィルター結果をシート分けする場合の最適なアクティビティをご教示いただければと思います。

よろしくお願いいたします。

よろしければ、プロセス毎圧縮して、ここにアップいただけませんか?

@HANACCHI
こんにちは。ありがとうございます。
こちらでよろしいでしょうか。

初めてアップさせていただくので、
期待されていたものと違うようでしたら、ご返信ください。

今年からUiPathを触り始めたばかりで、このようなフローが最適なものか?も
疑問に思いつつ、作成しておりますが、
ご指摘、アドバイス等々、よろしくお願いします。

Main.zip (3.3 KB)

「営業所一覧繰り返し」と言う名前の「繰り返し(各行)」で「dt_SalesStaffMaster」をまわしています。その最初の処理が、フィルタを掛け、出力が「dt_CaseListCD」となっていますね。

この処理ですと、前回使った「dt_CaseListCD」の領域が残っていて、悪さしそうなので、「データ テーブルをフィルタリング」する前に、初期化をしてあげてみてください。

代入アクティビテイ
左辺:dt_CaseListCD
右辺:New DataTable

image

こんな感じ

データの内容がないので、ちょっとこれ位しか言えません<m(__)m>

こんにちは

今回のケースですと
営業所一覧繰り返しのForEachRowの中でExcelApplicationScopeを用いたエクセルファイルの
オープンクローズを繰り返すのではなく、
まず当該エクセルファイルを開き、その中でForEachRowで書き込みを繰り返した方が
良いように思えます。
またこのような処理であれば、自動保存オプションはOFFにしておき
ExcelApplicationScopeから抜ける手前で「ワークブック保存」したほうが良いと思います。

@HANACCHI さま

ご返信、ありがとうございます。
DataTableの初期化、意識をしていませんでした。
前の処理とのつながりで、このような工夫も入れる必要あるのですね。勉強になります。

代入アクティビティ追加をいたしましたが、そのあとの範囲の書き込みアクティビティで
止まってしまいました。
今回は、利用している元データのようなものも含めてアップさせていただきましたので、
内容ご確認いただけますと幸いです。何度もお手数ですが、よろしくお願いCHECK用.ZIP (44.3 KB) します。

こんにちは

すみません。要件を誤って解釈していました。
ただ原因はエクセルファイルのオープンクローズの繰り返しにあると思うので
原因の切り分けとして
エクセルアプリケーションスコープの手前に待機を数秒入れてみて解消するか確認してみてください。
(ちなみにこちらの環境では、このままで(文字化けだけ修正して)正常に7営業所分ファイルが出力されました。)

か、出力のワークブックを設定して、持ちまわるようにして、
ご自身で保存、クローズをしていくって感じですね。

※本業が始まってしまって、ロボ、動かせません<m(__)m>

@Yoichi さま、こんにちは

ご確認いただきまして、ありがとうございました!
ファイルのオープン・クローズは、私も気になっていました。先のアドバイスの点もトライしてみます。

また、先程アップしたワークフローの内容が、ご相談させちただくのに
ちょっとややこしい形だったかもしれません。
ファイルを7つに分ける処理は、こちらでも成功しています。
1ファイルに7シート作成するフローが、どうしてもうまくいきません。(このフローをコメントアウトした形でアップしておりました。。。)

日付を入れる形でファイルを分けても分けなくても、構わないのですが、
用件として、ファイルを分けずにシート分けで、と現場要望があり、苦戦をしております。

1 Like

こんにちは

再現しました。
直接原因は、範囲を書き込みアクティビティのヘッダーの追加プロパティがOffになっているためです。
たまたま最初の札幌のレコードが0件のため、ヘッダー無しの状態ですと、書き込むデータがないため
当該エラーが発生しているようです。
このプロパティをONにすると例外は回避できると思います。

以下は参考ですが、パフォーマンスを上げるにはシート追加の度に保存するのではなく
最後にまとめて保存する方が良いと思いますので、上述の方法もご検討ください。

@Yoichi さま、こんにちは。

ありがとうございます!
期待していた処理を実行できるようになりました。
また、ExcelApplicationScopeとForEachRowの位置を見直しまして、
処理が恐ろしく早くなりました。

初歩的なミスが原因でしたが、このようにハマったおかげで、
色々情報を得ることが出来、Excel関連のワークフロー構築の機会が多く大変勉強になりました。

ありがとうございました。

2 Likes

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