• ベストアンサー

パフォーマンスについて

ASPからExcelの既存マクロを実行させようとしております。 既存マクロでは、シート上の値を参照集計して、帳票を出力していました。 これを、次の2つの方法のうちでどちらの方がパフォーマンスが良いか悩んでいます。 ----------------方法(1)---------------------------- ・ASP側でDBから値を取得する。 ・取得したデータをCSVする。 ・ASPでExcelを起動させる際にCSVを読み込ませて、既存シートと同じ体裁のシートを自動作成する。 ・既存マクロの実行 -------------------------------------------------- ----------------方法(2)---------------------------- ・ASP側でDBから値を取得する。 ・ASPでExcelを起動させ、既存シートと同じ体裁になるように、取得したデータを セルに代入する。(シートの自動作成) ・既存マクロの実行 -------------------------------------------------- とあるHPで、方法(1)の方が、方法(2)よりもパフォーマンスが良かったそうなのですが、本当にそうなのでしょうか? あと、IF文のネストとSELECT CASE文は、どちらがパフォーマンスが良いのでしょうか? ご教授願います。

質問者が選んだベストアンサー

  • ベストアンサー
  • msystem
  • ベストアンサー率42% (79/186)
回答No.2

私もhequilさんの意見に賛成です。 ただ考えるに、データ件数が少ないときは方法(2)のほうがパフォーマンスがよく、データ件数が増えると、方法(1)のほうがパフォーマンスがよいような気がします。 どちらの方法も、あらかじめ、サーバーサイドでExcelを立ち上げておいたほうがパフォーマンスがいいと思います。Excelの起動はなかなか時間のかかる処理なので、Global.asaであらかじめExcelを立ち上げておいて、Applicationオブジェクトに入れておくのがいいのではないでしょうか?

その他の回答 (1)

  • hequil
  • ベストアンサー率65% (242/372)
回答No.1

このようなパフォーマンスの優劣ですが、 一般的にこっちの方が早い、というのはあっても 実際に処理の内容によっては異なることもあります。 当たり前な話ですが、実際の処理を2パターンとも作成し、処理時間を計測するのが一番だと思います。 (面倒ですが・・・・) なお、ASPで処理時間を計測する方法の1つとして 河端善博氏が公開されているTimeToolコンポーネントの GetTickCount関数を利用すればミリ秒単位での計測が可能です。 以上、参考まで

参考URL:
http://www.kawabata.com/TimeTool/

関連するQ&A

  • ASPより入力した値をDBへ問い合せしExcelに・・・。

    ASPのテキストボックスにて入力した値で、DB(Oracle)のテーブルへ 問い合せを行い、結果をExcelの定型シートに入れ込みたいのですが方法が 解りません。 1.DBへの問い合せの記述方法。 2.取得した値をExcelのシートへ入れ込む記述 申し訳ありません。初心者なのでなるべく丁寧に教えてください。

  • ASP.NETのパフォーマンス要因

    マスター検索画面でグレープシティのスプレッドを使用しています。 DBの取得は一瞬ですが、どうにもアプリケーションとしての速度が遅いです。ASPでパフォーマンスを上げるにはどうしたらよいでしょうか? IIS6.0でIEを使用しております。

  • エクセルのマクロであるフォルダ内にある全エクセルファイルのシート1!(

    エクセルのマクロであるフォルダ内にある全エクセルファイルのシート1!(A1:X365)の値を取得し、コピー元のエクセルファイル名のシートに貼付ける方法を教えて頂けないでしょうか?できればコピー元のエクセルファイルは開かずに実行させたいです。エクセルは2003を使っています。

  • EXCELのシート名自動入力

    EXCELでシート名にセルA1の値を自動入力したいので、 下記のマクロを使いましたが、いちいちマクロを実行しないと自動入力できません。 Public Sub SheetName() ActiveSheet.Name = Range("A1").Value End Sub これを、マクロを実行しなくても、セルA1の値が変わった時点で 自動的にシート名も変わるようにできないでしょうか?

  • SELECT時のパフォーマンス

    ケースA:[SELECT文]-[DB2].[ビュー]-[DB1].[テーブル] ケースB:[SELECT文]-[DB2].[テーブル] [テーブル]はどちらも同じ内容です。 ケースAは[DB1]にある[テーブル]を[DB2]の[ビュー]を通して見てます。 ケースBは[DB2]に[DB1]の[テーブル]と同じ物をコピーしています。 同じSELECT結果を表示するSQLで ケースAとケースBでパフォーマンス的に差が出るのでしょうか? 私が思うのはケースAの場合別DBにあるテーブルをビューを使って 見てる事によって、DBやテーブルへのアクセス権限等の 確認処理でパフォーマンスが低下すると思うのですが 推定実行プランやプロファイラで見てもよく分かりませんでした。 些細な事でも構いませんので、教えてくださいませ。

  • 複数CSVをエクセル複数シートに自動コピペ

    同じ形式のCSVファイル(計12)を一つのエクセルファイルの各12シートに コピペする作業を毎月行っています。 エクセルファイル・12個のCSVファイルは同じフォルダに保管していますが、 マクロ等を使って自動でコピペできる方法を教えて下さい。 ※現在、マクロを勉強中ですが、中々思うようなマクロが組めません…。

  • エクセルを閉じる時にマクロを実行する

    お世話になります。 エクセルのファイルを閉じる時にあるマクロを実行したいと思っています。 右上の×印をクリック、Alt+F4、Alt+F→X などエクセルを閉じようとしたときに自動的にマクロを動かすことが出来るでしょうか? マクロ自体は、あるシート全体をコピー→外のシートに形式を選択して貼り付け(値) というごく簡単なものです。 また参考までにエクセルファイルを開いたときにマクロを実行というものがあれば教えてください。 よろしくお願いします。

  • EXCEL(マクロ機能あり)のコピー

    お世話になります。 現在、マクロ機能のあるEXCELファイルを別のPCへコピーし実行すると 思うような結果が返ってこない。 Sheetが2つあり、 ・Sheet1はDBより取得 ・Sheet2はSheet1を参照し集計 というように構成しています。 自分のPCでは全て問題なく実行できるが、 別のPCではSheet1のデータ取得は実行でき、Sheet2の参照集計ができない。 という点で悩んでいます。 お力添えをお願いいたします。 考えられる問題点は、 1.ファイルの作成時にマクロ機能を別のEXCELファイルよりコピー(ボタンの機能など)し、マクロの登録を行ったので参照がうまくいっていない。 2.マクロのコピーの仕方が正しくない 3.Excelファイルに何か設定をしなければならない(参照設定など) と考え調べていたのですが、解決に至りませんでした。 どなたかご教授をお願いいたします。

  • セルの値が変ると自動でマクロが実行される。

    セルの値が変ると自動でマクロが実行されるVBAを教えて下さいm(_ _ )m 例えば、シート1のA1の値が変ると、マクロAが実行される。 シート1のA2の値が変ると、マクロBが実行される。 と一つのシート内に複数のイベントを設置したのですが、イマイチわかりません。 知恵をお貸し下さい。

  • エクセルのマクロでファイルを自動で保存するには?

    こんにちは。お世話になります。 エクセルのVBAマクロ文の書き方でお知恵を拝借したいと思います。 さて、私のかかる業務でエクセルファイルで営業実績を出しています。 COBOLで作ったファイルをCSVにインポートして そのCSVの値を別のエクセルファイルで引っ張るという手順を踏んでいますが、 それをマクロで動かすとエクセル上で『保存しますか?』と聞いてきます。 答えは『はい(Y)』で確定しているので、その命令文さえ組み込められればいいのですが、 その命令文の書き方が判りません。 (解決したいVBAマクロの命令文) Workbooks.Open Filename:="D:\(Aファイル).csv" Workbooks.Open Filename:="D:\(Aファイルの値を引っ張るBファイル).xls" ThisWorkbook.Saved = True (ここで聞いてくる注意に自動で『Y』を入れたいと思っています。) ActiveWindow.Close ActiveWindow.Close 以上、お知恵を拝借したく、お願いいたします。