- PR -

EXCEL出力を高速にする方法

投稿者投稿内容
なな
ベテラン
会議室デビュー日: 2003/09/18
投稿数: 79
投稿日時: 2003-10-21 15:18
EXCELシートへのデータ貼り付けを配列で行うことに決定し、その処理もくみこんで
思い描いていた通りに動いた、っと思ったのですが
レコード件数が50件位だと
正常に動くのですが300件位のデータを配列に入れて、
配列からEXCELシートにデータを移動させようとするとHResultエラーで落ちてしまうのです。
配列で一気にデータをEXCELシートに貼り付けるのにも限度があるのでしょうか?
Mr.タナカ
ベテラン
会議室デビュー日: 2003/03/15
投稿数: 64
投稿日時: 2003-10-21 19:51
引用:

なちゃさんの書き込み (2003-10-21 11:35) より:

確かに高速化にはなるでしょうけれど、特にサーバ環境では問題あると思います。
クリップボードは共有のリソースですからね(同時に動いたりするとどうなるか…というところ)
# 個人的にはクライアント環境でもあまり好きではありませんが。

クリップボードを使うなら、配列の方が安全ではないかと思います。
# 配列では出来ないとか理由があったらすみません




確かに...
VB6時代のC/Sシステムではなく、サーバ処理なのをすっかり忘れていました。
すみませんでした。m(__)m
Beatle
ぬし
会議室デビュー日: 2003/06/09
投稿数: 394
投稿日時: 2003-10-22 16:48
>配列で一気にデータをEXCELシートに貼り付けるのにも限度があるのでしょうか?

配列もメモリを使用しますから、当然空き状況によって限界は変わります。
配列の宣言の仕方や型によっても無駄な空間や大きなサイズを確保してしまいます。
ただ、「HResultエラー」はシートに貼り付ける時に出ているのですよね?
(配列そのものには格納できている。)

であれば別の問題かと。データの中身とか...各項目の長さにもよりますが300件
ぐらいではよほどLowスペックな環境で無い限り通常は大丈夫かと。

尚データ件数が多くて配列も確保できない状態になるようでしたら、SQLなりで一定の
件数で切って分割で配列→Rangeに貼付ということにすればよろしいかと。(取得した
データセットを件数ごとにという方法もありますが、すでに全件メモリ上に持っている
状態だとやはり厳しくなるのでLowNumなりHOST変数なり、Fetchなりで分割して読み込む
ほうがメモリ節約になると思います。)
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2003-10-22 17:48
ほむらです。
使い方は良くわからないんですけど。
Excelのデータベースクエリは使用できませんか?

VBAヘルプでQueryTablesをしらべれば出てきたと思うのですが。。。
マクロの記録でも使い方わかるかも?(笑
なな
ベテラン
会議室デビュー日: 2003/09/18
投稿数: 79
投稿日時: 2003-10-23 11:56
Beatleさん、ほむらさん返答ありがとうございました。
とりあえず、Beatleさんのアドバイスを参考にしながら
一定の件数で切って分割して配列に入れようと思います。

スキルアップ/キャリアアップ(JOB@IT)