プロが教える店舗&オフィスのセキュリティ対策術

ASPからExcelの既存マクロを実行させようとしております。

既存マクロでは、シート上の値を参照集計して、帳票を出力していました。

これを、次の2つの方法のうちでどちらの方がパフォーマンスが良いか悩んでいます。
----------------方法(1)----------------------------
・ASP側でDBから値を取得する。
・取得したデータをCSVする。
・ASPでExcelを起動させる際にCSVを読み込ませて、既存シートと同じ体裁のシートを自動作成する。
・既存マクロの実行
--------------------------------------------------

----------------方法(2)----------------------------
・ASP側でDBから値を取得する。
・ASPでExcelを起動させ、既存シートと同じ体裁になるように、取得したデータを
セルに代入する。(シートの自動作成)
・既存マクロの実行
--------------------------------------------------

とあるHPで、方法(1)の方が、方法(2)よりもパフォーマンスが良かったそうなのですが、本当にそうなのでしょうか?

あと、IF文のネストとSELECT CASE文は、どちらがパフォーマンスが良いのでしょうか?

ご教授願います。

A 回答 (2件)

私もhequilさんの意見に賛成です。



ただ考えるに、データ件数が少ないときは方法(2)のほうがパフォーマンスがよく、データ件数が増えると、方法(1)のほうがパフォーマンスがよいような気がします。

どちらの方法も、あらかじめ、サーバーサイドでExcelを立ち上げておいたほうがパフォーマンスがいいと思います。Excelの起動はなかなか時間のかかる処理なので、Global.asaであらかじめExcelを立ち上げておいて、Applicationオブジェクトに入れておくのがいいのではないでしょうか?
    • good
    • 0

このようなパフォーマンスの優劣ですが、


一般的にこっちの方が早い、というのはあっても
実際に処理の内容によっては異なることもあります。

当たり前な話ですが、実際の処理を2パターンとも作成し、処理時間を計測するのが一番だと思います。
(面倒ですが・・・・)

なお、ASPで処理時間を計測する方法の1つとして
河端善博氏が公開されているTimeToolコンポーネントの
GetTickCount関数を利用すればミリ秒単位での計測が可能です。

以上、参考まで

参考URL:http://www.kawabata.com/TimeTool/
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!