.netを利用したexcel更新速度

.netを利用したexcel更新速度に関してです。
添付ファイルのWFにあるように、キーマッチングさせ各項目を更新しています。

更新項目は、30項目で、データ件数は5000件です。
更新元データと更新データはイコールです。
お互いのデータはexcelです。

処理をすすめたところ、2.5Hかかります。

各項目で、下記のように30項目更新しています。

DT01.select(“ID = '” + row(149).ToString() + “'”)(0)(“項目2”).ToString()

処理の時間短縮を考えています。

ご教示いただければと思います。test_更新20190415.xaml (24.3 KB)

ExcelWriteCell
DT01.select(“ID = '” + row(149).ToString() + “'”)(0)(“項目1”).ToString()

の部分を
Assign
row(31) = DT01.select(“ID = '” + row(149).ToString() + “'”)(0)(“項目1”).ToString()

等にして、最後に
ExcelWriteRangeで一気に書き込むのはどうでしょうか?

※速度的に早くはなりますが、他の問題が起きる可能性はあります。

1 Like

ありがとうございます。

更新する値をassginで移送して、最後にExcelWriteRangeということですが、
どのようにExcelWriteRangeを利用すればよいでしょうか。

ご教示お願いします。

すいません。質問の意図が少しつかめないのですが。。。
シート名と開始位置を指定してDT02を書き込むだけを想定しています。
ExcelWriteRangeのどの部分が不明なのでしょうか?

回答ありがとうございます。
直接excelのセルに更新を考えていました。
項目が150個あり、2/3が計算式だからです。

そのためwrite rangeを利用してdatatableに格納してファイルに保存すると
計算式が消えてしまうのでどうすべきか悩んでいます。

更新するものだけをdatatableに入れてキーをもとに内部結合できればよいのですが。

値を書きこむところにも式はあるでしょうか?
ないのであれば、
Assign
dt_Add = DT02.DefaultView.ToTable(true,“項目1”,“項目2”)
等で、該当列だけのテーブルが作成できますので、その部分だけを張り付ければどうでしょうか。

1 Like

ありがとうございます。
別シートに更新項目をデータを作成し、それをキーマッチングさせて更新したいと思います。

・キーマッチングさせ、値の移送はexcel関数を用いる。
・全更新後、更新対象となる項目の計算式で算出された値をコピーして値貼り付けをする。(計算式は消える)

というように考えましたがどうでしょうか。
VBAでの方法もありますが後からのメンテナンスを考えるとUIPATHで行った方がよいと思いました。