@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

ASP.NETで既存のEXCELファイルを実行するには?

投稿者投稿内容
キース
会議室デビュー日: 2003/02/13
投稿数: 8
投稿日時: 2003-02-14 10:46
いつも拝見させて頂いております。

ASP.NETのWEBアプリケーションから、同じWEBサーバー上の
既存のExcelファイル(マクロ)を実行させたいのですが、
どのようにしたら良いのでしょうか?

現在は以下の方法でやっていますが、うまくできません。
ソースの記述方法が間違っているのでしょうか?

@VisualStudio.NETプロジェクトの「参照の追加」で
「Microsoft Excel 10.0 Object library」を追加する。
A「DCOMCNFG.EXE」でASPNETにExcelの実行を許可する。
BASP.NET(C#)のソース(抜粋)
コード:
   Excel.Application app; 
   Excel.Workbook book; 
   app = new Excel.Application(); 
   book = app.Workbooks.Open("Excelファイル名",…);


また他に良い方法があったら教えて下さい。

よろしくお願いします。

環境:Windows XP Professional、ASP.NET(C#)、Office XP
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-02-14 11:16
>>現在は以下の方法でやっていますが、うまくできません。

 どう、うまくできていませんか?

 例えば、セキュリティ例外がでるとか、ファイルの読み込みができないとか、ファイルを読み込んでもマクロが動作していないとか…
キース
会議室デビュー日: 2003/02/13
投稿数: 8
投稿日時: 2003-02-14 16:22
ご返答ありがとうございます。

どううまく行かないのかと言いますと、

現在この処理を実行すると、ブラウザがずっとページの
読み込み中になります。さらに待ってると「サーバーを
使用できません」となります。

そしてこの間にタスクマネージャを見ると、
ユーザーASPNETで aspnet_wp.exe と EXCEL.EXE が
動作しています。
「サーバーを使用できません」となる前に、EXCEL.EXE
を強制的に終了すると、ブラウザの処理が進みます。

セキュリティ例外は出てませんが、ファイルの読込はできて
ないです。(ファイルを開くとマクロが自動実行されて新しい
ファイルが生成されるのですが、それはできていません。)

書き方が足りずすみませんでした。
よろしくお願いいたします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-02-14 17:00
引用:

キースさんの書き込み (2003-02-14 16:22) より:

現在この処理を実行すると、ブラウザがずっとページの
読み込み中になります。さらに待ってると「サーバーを
使用できません」となります。

そしてこの間にタスクマネージャを見ると、
ユーザーASPNETで aspnet_wp.exe と EXCEL.EXE が
動作しています。
「サーバーを使用できません」となる前に、EXCEL.EXE
を強制的に終了すると、ブラウザの処理が進みます。

セキュリティ例外は出てませんが、ファイルの読込はできて
ないです。(ファイルを開くとマクロが自動実行されて新しい
ファイルが生成されるのですが、それはできていません。)


 ファイルが読み込まれているのと、マクロが実行されるのは別です。まず、マクロがないファイルを読み込んでみてください。
 次に、エクセルの「ツール→マクロ→セキュリティ」は、どうなっていますか?これが「高」だと署名のないマクロは全く実行されませんし、「中」だと問い合わせがあります。「低」にして実行できるなら、マクロに署名をする必要があります。
※この設定を「低」にすると、すべてのマクロが無秩序に実行されてしまう点にご注意ください。

#この設定って、ログインユーザ単位?
#CreateObjectだと、このセキュリティの設定にかかわらずマクロが実行されますが…
キース
会議室デビュー日: 2003/02/13
投稿数: 8
投稿日時: 2003-02-14 18:23
なるほど。ありがとうございます。

マクロのセキュリティは低になっています。
確かにこの設定がユーザーASPNETに適用されるかどうかは
ちょっと分かりません。

で、マクロを含まないExcelファイルを開くという事を
やってみたのですが、結果としてはマクロを含むものを
開こうとした時と同じ状況になります。

ちなみに、ファイル開かれているかどうかを確認する
方法が分かりません(勉強不足ですみません)
ご伝授下さい。
TK
常連さん
会議室デビュー日: 2002/08/13
投稿数: 42
投稿日時: 2003-02-14 19:51
TKです。こんにちは。
MSのサイトでこんなのがあります。
ご参考までに。(ASP.NETでは試していませんが、ASPでは確認済みです。)

http://support.microsoft.com/default.aspx?scid=KB;ja;JP257757
http://support.microsoft.com/default.aspx?scid=kb;ja;288367
キース
会議室デビュー日: 2003/02/13
投稿数: 8
投稿日時: 2003-02-14 20:00
引用:
TKです。こんにちは。
MSのサイトでこんなのがあります。
ご参考までに。(ASP.NETでは試していませんが、ASPでは確認済みです。)

http://support.microsoft.com/default.aspx?scid=KB;ja;JP257757
http://support.microsoft.com/default.aspx?scid=kb;ja;288367


ありがとうございます。
上記サイトを見てみます。できそうでしたら試してみます。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-02-17 16:26
 TKさんの提示されたサイト、見てみました。「Office製品をサーバサイド、非対話型で使用することは推奨しないしサポートしない」というのは、恐れ入りました。ここで「サーバサイド」とは、「デスクトップに対話型でログインしているユーザ以外のアカウントで実行されるコード」と定義され、タスクなどによるローカルPCでの自動実行も含まれる、とのことです。

 ASPNETユーザでは試していない(試せない?)のですが、新しいユーザを作ってEXCELを起動したところ、Windows Installerが起動して何かの設定をし、イニシャルを尋ねるダイアログが表示されました。このあたりがMSが「推奨しないしサポートもしない」といっているところですね。キースさんの問題も、このあたりにあるのではないかと思われます。・・・で、進展はありましたか?

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