Excelファイル間で特定の行列を転記(ループ)させたい。

Uipathを使用してExcelファイル間で転記をしたいと考えています。

申請書ファイル(Input.xlsx)のA,C,H列の6行目以下のデータを、一覧ファイル(Output.xlsx)のJ,K,L列のそれぞれ対応した列の最終入力行の下に転記させたいと考えています。

input.xlsxをdatatable型の変数:dataに代入。
転記するシートの入力セルを取得
(ここではホットキーを入力する機能を使い、入力したい列の最終セルから入力があるセルを探し、その一行下のセルを入力するセルとして指定しています。
for each rowでそれぞれの列を指定しループさせる。
この流れをA,C,H列で3回行う。

質問なのですが、

①Input.xlsxの行の指定
②Output.xlsxの取得したセルから順番に書き込む

これらの指定方法がわからずご教授願いたいです。

本来であればVBAで実行するべき内容なのかもしれませんが。。

また他のやり方等ありましたらお教えいただけないでしょうか。

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

Input.xlsx (9.7 KB) output.xlsx (9.6 KB)

Main.xaml (14.9 KB)

こんにちは

エクセルでのキー操作なしで、DataTableの操作のみで実現できると思います。
以下サンプルです。一度お試しいただければと思います。

Sample20200813-3.zip (29.7 KB)

2 Likes

返信ありがとうございます!

データテーブルの操作で簡単にできないかと思っていたのですが
こんな方法が使えるのですね。

Input.xlsxのタイトルから範囲指定してOutput.xlsxの付随するセルに
追加するイメージでしょうか。

Write Rangeで入力のあるセルをパスできるのは何故でしょうか?

1 Like

こんにちは

Input.xlsxのタイトルから範囲指定してOutput.xlsxの付随するセルに
追加するイメージでしょうか。

Input.xlsxに対して、表の左上のセルを指定することにより、自動的に
データのある範囲をDataTableとして取り込んでくれるので、
それをもとに該当する値を出力用のDataTableに追加しています。

Write Rangeで入力のあるセルをパスできるのは何故でしょうか?

セルをパスしているのではなく、最初にOutput.xlsxの表全体を読み込み
それにInput.xlsxの情報を追記して、最後に全体を書き戻しています。

こんにちは。

ありがとうございます。理解できました。

該当する値を出力用のDataTableに追加しています。

例えば列で指定する事は可能でしょうか?

サンプル環境では動作したのですが、実際の環境に置き換えてみるとうまくいきません。

範囲を読み込み: Cannot get a numeric value from a error formula cell

このようなエラーが発生するのですが、
シート内に計算式やマクロが入っている事が影響したりするのでしょうか。。

1 Like

こんにちは

期待する方法がよく読み取れないのですが、DataTableに対して列でしていして追加するということでしょうか?あるいはエクセルのワークシートに対して列で追加するということでしょうか?

範囲を読み込み: Cannot get a numeric value from a error formula cel

メッセージの内容をそのまま考えると、どこかにエラーとなっている計算式があるような
感じですが、いかがでしょうか?

期待する方法がよく読み取れないのですが、DataTableに対して列でしていして追加するということでしょうか?あるいはエクセルのワークシートに対して列で追加するということでしょうか?

説明不十分でした。DataTableに対して列でしていして追加するという意味合いです。

メッセージの内容をそのまま考えると、どこかにエラーとなっている計算式があるような
感じですが、いかがでしょうか?

シート内を見直してみて考えられる原因を解決してみたところ貼り付けられるようにはなったのですが、貼り付け後のExelファイルを開くとファイルエラー :データが失われた可能性があります。と表示され、元の書式が保持されない状態です。
もう少し原因を追究してみたいと思います。

こんにちは

列単位でDataTableを更新するアクティビティはありませんので、この部分に関しては
何らかの形でループや繰り返しを構成する必要があると思います。