.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で行った方がよいと思いました。