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

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

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

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

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

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

ご教授願います。

このQ&Aに関連する最新のQ&A

ASP とは」に関するQ&A: URLの.aspとは??

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で質問しましょう!

このQ&Aと関連する良く見られている質問

Q[ASP]CSVダウンロード時に、直接開いた場合のシート名

お世話になります。

ASPからcsvファイルを動的に生成して(サーバには保存しないで)ダウンロードを実行するという方法は実現できています。
しかし、ダウンロードダイアログが表示された際に、「開く、保存、キャンセル」の中から「開く」を選択すると、Excelが起動しcsvファイルを読み込むのですが、
シート名が「 .csv]ファイル名[1] 」となってしまいます。(余計な文字がくっついてきます。)

この余計な文字がシート名に含まれないようにしたいのですが、何かよい方法はないでしょうか。
よろしくお願いいたします。


◆環境
サーバ:windows2003server
クライアント:windowsXP SP2
       EXCEL2000
       
◆csv生成時の設定
ContentType = "application/x-csv"
AddHeader "Content-Disposition" ,
 " attachment; filename = AAA20060928.csv"

Aベストアンサー

クライアントのIEの問題(?)なので、どうにもならないと思います。
「開く」を選択された場合、キャッシュを保存しておくディレクトリに一時的にファイルを保存しますが、そのときに、[1]と連番が振られてしまいます。
なので、利用者の方に、気になるなら、一度、保存してから開くようにお願いするしかないと思います。

QASPでExcel起動後マクロ実行

似たような質問があったのですが、解決できませんでしたので質問させて頂きます。
下記のプログラムで、ASPでExcelを起動後、マクロを実行させてたいと考えています。

Set objEx = Server.CreateObject(Excel.Application)
objEx.Application.Visible = True
objEx.Workbooks.Open "C:\Excel\hoge.xls"
objEx.Run("hoge.xls!Module1.macro1()")

しかし、excelがバックグラウンドで実行されて表示されないので困っています。表示させる方法はあるのでしょうか?
アドバイスお願い致します。

Aベストアンサー

> excelがバックグラウンドで実行されて表示されないので困っています。

サーバーからすると、ASP から命令されて Excel を起動しようにも、表示させる場所がなくて困っていることでしょう。
というかどこに表示させたいのでしょうか?

サーバーにインストールされている Excel を ASP がキックして起動し、サーバーの画面に表示させたい、と?
Excel を起動させるユーザー アカウント は誰になるでしょうか?
そのユーザー アカウント でサーバーにログオンしてあり、起動した Excel を表示させられる状態になっている?
そうなっていないと思います。

ASP を実行しているのは多くの場合 IWAM_xxxx (xxxx はサーバーのホスト名) というアカウントですが、このアカウントが Excel を対話型に起動するためのデスクトップは無い状態ですよね。

こちらの情報をご確認ください。
http://support.microsoft.com/?id=257757
サーバーサイドで Excel 等をオートメーションで利用する事を考えている人への注意事項がまとめられています。

> excelがバックグラウンドで実行されて表示されないので困っています。

サーバーからすると、ASP から命令されて Excel を起動しようにも、表示させる場所がなくて困っていることでしょう。
というかどこに表示させたいのでしょうか?

サーバーにインストールされている Excel を ASP がキックして起動し、サーバーの画面に表示させたい、と?
Excel を起動させるユーザー アカウント は誰になるでしょうか?
そのユーザー アカウント でサーバーにログオンしてあり、起動した Excel を表示させられる状...続きを読む

Q実行中のASPファイル名(自ファイル)を取得する

お世話になります。

ASP内で現在実行中の自ファイル名称(パスでも可です)を取得したいと考えております。
VBでのMe.Nameみたいなことができるのかと思ったらできなくてちょっと困ってます。

ご存知の方いらっしゃいましたら何卒ご教授の程、よろしくお願いいたします。

一応環境情報も。。。
環境:IIS5.1 + ASP

Aベストアンサー

参考URLの方法で解決できます。

参考URL:http://gate.ruru.ne.jp/kakucha/asp/39.asp

QVBで作成した実行形式をASPを用いて実行したい

VBで作成した標準EXEをWEBサーバ上で実行しようと考えていまして現在苦悩しています。

BASP21を使用してEXEを実行したところ、PROCESSには起動したEXEが表示されているので実行はされてはいるのですが処理が適切になされていない状況です。

VBで作成した実行形式をASPを用いて実行する場合には、何か方法があるのでしょうか?
よろしくおねがいします。

[動作環境]
OS:Windows2000 ServerSP3
ブラウザー:IE6.0
VB6.0+SP5
実行形式の処理内容
SUB MAINを起動関数に設定し、OPEN関数でFILE書き込みを行う。
なお、このファイルはサーバー上に作成される。

Aベストアンサー

ひさびさに見たので続きがあるとは思っていませんでした(汗)

>ActiveX.exeにしてBasp21から起動しましたが、
BASP21から起動するのではなく
Server.CreateObject("作成したActiveX.exe;レジストリの登録名")で
クリエイトする形になると思います。
で、ActiveX.exeには、処理を開始するメソッド(例としてStart():Public)と
処理を終了するメソッド(例としてEnd():Public)を作っておいて、
(ちょっとメソッドの名前が変かもしれんが・・・それはおいといて)
dim objActX
Set objActX = Server.CreateObject("作成したActiveXのレジストリ登録名")
objActX.Start()
'この間にCOMでファイル処理が実行される
objActX.End()
Set objActX = Nothing
とかそんな感じだと思います。

リモートサーバーファイルのチェックは今回特に必要ないと思います。
Clireg32.exeを使ってリモートコンポーネントとして
登録する場合に設定します。
VBRというファイルが生成されるようです。
私も詳しくは分かりません

もし、ActiveX.dllにするなら
アパートメントスレッドモデルにした方がよさげです。

書籍ですが、
私は持っていませんが確か、
翔泳社の「VBCOM」と言う書籍が
詳しかったように思います。
あと
私が所有していて結構使えたと思う書籍は
「VisualBasic6.0によるActiveXプログラミング入門」
Ohmsha(オーム社)です。
一度、立ち読みでもされてみては!?

あまり役に立たない情報で申し訳ない!

参考URL:http://www.shoeisha.com/book/Detail.asp?sid=8

ひさびさに見たので続きがあるとは思っていませんでした(汗)

>ActiveX.exeにしてBasp21から起動しましたが、
BASP21から起動するのではなく
Server.CreateObject("作成したActiveX.exe;レジストリの登録名")で
クリエイトする形になると思います。
で、ActiveX.exeには、処理を開始するメソッド(例としてStart():Public)と
処理を終了するメソッド(例としてEnd():Public)を作っておいて、
(ちょっとメソッドの名前が変かもしれんが・・・それはおいといて)
dim objActX
Set objActX = Server....続きを読む

QASPとASP.NETとASP.NET2.0の違い

Web開発初心者です。

帳票をPDF表示するWebアプリケーションを開発することになり、
言語はASPを使用することになりました。

そこで
ASP
ASP.NET
ASP.NET2.0
の違いをご存知の方がいらっしゃいましたら教えていただけますでしょうか。
それぞれIIS以外に必要な実行環境、ツール等も教えていただけると助かります。

不明瞭な箇所がありましたら説明させていただきます。
すいませんがよろしくお願いします。

Aベストアンサー

ASP用のツールは、多分、無いですね・・・
#メモ帳でASPファイルを作成してサーバにコピーとか。

ASP.NET用の開発ツールは、Microsft社製の「VisualStudio」シリーズがあり、
ASP.NET(1.1)は、「VislaStudio 2003」で、
ASP.NET2.0は、「VislaStudio 2005」で開発できます。


「Visual Web Developer 2005 Express Edition 」は、
「Visual Studio 2005」のEditionの1つで、有料のパッケージ版(入門者つき)と無料のダウンロード版があります。
機能的には同じで、無料版だからといって、商用利用の制限等はありません。

(http://www.microsoft.com/japan/msdn/vstudio/express/faq/default.aspx)

「Express Edition を商用目的で使用することはできますか。」

また、「ASP.NET1.1用」の無料の開発ツールとして、3rdパーティ製ですが、
「Web Matrix 」と言うのがあります。

「ASP.NET Web Matrix Project 日本語版」
(http://www.microsoft.com/japan/msdn/asp.net/webmatrix/)

ASP用のツールは、多分、無いですね・・・
#メモ帳でASPファイルを作成してサーバにコピーとか。

ASP.NET用の開発ツールは、Microsft社製の「VisualStudio」シリーズがあり、
ASP.NET(1.1)は、「VislaStudio 2003」で、
ASP.NET2.0は、「VislaStudio 2005」で開発できます。


「Visual Web Developer 2005 Express Edition 」は、
「Visual Studio 2005」のEditionの1つで、有料のパッケージ版(入門者つき)と無料のダウンロード版があります。
機能的には同じで、無料版だからといって、商用利用...続きを読む


おすすめ情報