cancel
Showing results for 
Search instead for 
Did you mean: 

MS Excel VBO Write Collectionがすごく遅いですがどうしていますか?

CHIHOKOKISHIMOT
Level 3
こんにちは。いつも参考にさせていただいています。

MS Excel VBO Write CollectionでCollectionの値をExcelに書き出しているのですが、
すごく遅いです。
6千行、4列程度で10分以上かかってしまいました。

Collectionの値をExcelに転記するのはよくある実装と思いますが、
皆様どのような工夫をされているのか、教えていただけますでしょうか?

------------------------------
CHIHOKO KISHIMOTO
------------------------------
3 REPLIES 3

HidetoshiSuzuki
Level 5
標準ExcelVBOのWrite Collectionは各セルに一個ずつ値を書いていくので、数が多いと遅いのはどうしようもないと思います。
我慢できない場合、コードステージで配列を一括代入するようにしたバージョンを作ると良いです。
以下のサイトにこの高速化について解説があります。(VBAですが多少読み替えれば問題なく.NETでも使えるかと)
http://officetanaka.net/excel/vba/speed/s11.htm

なお宣伝みたいで恐縮ですが、私の会社で公開している「日商エレクトロニクス標準BPアセット」にはExcelVBOの拡張版も含まれていて、
まさに上記の高速バージョンが「Write Collection (Fast)」という名前で実装されていますので、よろしければ参考にしてください。
https://digitalexchange.blueprism.com/dx/entry/83455/solution/bp



------------------------------
Hidetoshi Suzuki
Nissho Electronics
Asia/Tokyo
------------------------------

こんにちは。Blue Prism の生井沢です。

以前、以下のスレッドで紹介させていただきました、Excel関連操作実装サンプル集 の「3. 単一CSVファイルからExcelへのコピペ」で [Copy] と [Paste] アクションを用いている実装が参考になるかと思います。この2つのアクションを利用するとクリップボード経由のコピー&ペーストが可能なので大量データの場合は効果的だと思います。

https://community.blueprism.com/communities/community-home/digestviewer/viewthread?GroupId=205&MessageKey=a262b013-0687-45ac-abb6-636a2fda08f8&CommunityKey=99c35a33-0706-4eb0-8b02-f23d6bb9b57f&tab=dig...

コメントを投稿した後に気づきましたが、上記手順は Excel から Excel へのコピー&ペーストする場合に有効な方法でした。今回は恐らく Excel 以外のアプリからコレクションとして抽出したデータを Excel へ貼り付けたいと言う用途だと思われるため上記方法ではダメですね…。失礼いたしました。

上記以外にも以下の神谷町RPAブログの内容も参考になるかと思います。

・大容量データを扱う
 https://www.ebocean.work/entry/2019/10/31/100220

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

------------------------------
Hiromi Namaizawa
Senior Solutions Consultant
Blue Prism
Asia/Tokyo
------------------------------

CHIHOKOKISHIMOT
Level 3

​Suzuki様

ありがとうございます。
Write Collection (Fast)!まさに私が今欲しいものです!
参考にさせていただきます。


Namaizawa様

情報提供ありがとうございます。
最後に記載の通り、Collectionでいろいろとデータ加工したものを一気にExcelに張り付けたいという要件でした。
エクセル・CSV間のコピペの際は参考にさせていただきます。



------------------------------
CHIHOKO KISHIMOTO
------------------------------