- 締切済み
ASP.NETからエクセルを呼び出せますか?
VS2003でASP.NETのプログラムを作成しているのですが、ASP.NETからexcel.exeなどのexeプログラムは呼び出せるのでしょうか? shell関数を使っても、何も反応がありません。 すいませんが、出来る方法を教えて下さいますようお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- qtea
- ベストアンサー率77% (38/49)
コンポーネントサービスで、「Microsoft Office Access アプリケーション」を探す。 プロパティのセキュリティタブに、3つアクセス許可があるので、カスタマイズを選択して、XPなら「ASPNET」、2003なら「NETWORK SERVICE」のアカウントで起動できるようにする。 VSのプロジェクトの参照の追加の「COM」タブに「Microsoft Access 11.0 Object Library」がある(はず)ので追加する。 あとは、 >Dim myaccess As New Microsoft.Office.Interop.Access.Application として、アクセスの起動ができているのか確認する。 ここから、どうするのかは、アクセスでなにかしたことがないので、下記を参照してみてください。 http://support.microsoft.com/kb/825796/ja http://www.microsoft.com/japan/msdn/office/access2003/odc_AcAutomateVBNet.aspx http://support.microsoft.com/kb/317114/ja?spid=1266&sid=959 http://support.microsoft.com/default.aspx?scid=kb;ja;306682 http://msdn2.microsoft.com/ja-jp/library/microsoft.office.interop.excel(VS.80).aspx HELP ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1041/odeopg/html/deovrotherobjectspropertiesmethodsofapplicationobject.htm
- qtea
- ベストアンサー率77% (38/49)
詳しいことは、会社にいかないとVSがないので書けませんけど… COMを利用するのが普通(?)かな… 簡単にポイントだけを書くと… ◯ASP.NETを動作させるPCにExcelをインストールする ◯プロジェクトの参照設定で、Excel Application を参照するようにする ◯コントロールパネル->管理ツール->コンポーネントサービスを起動して、\コンピュータ\マイコンピュータ\DCOMの構成の下にある、Microsofot Excel Applicationのプロパティを開いて、ASP.NETの実行ユーザー(OSやIISのバージョンによって、ユーザ名はかわる。XPだとASP NETだったかな。)にアクセス権限をあたえる ってところでしょうか。 注意点としては、COMオブジェクトをきちんと開放しなければ、起動したExcelは、おわってくれません。 http://jeanne.wankuma.com/tips/programing/releasecom.html 起動しても、ExcelのWindowは開かないので、起動しているのかどうかを確認するには、タスクマネージャーでプロセスを見てください。 Windowを開かないので、もし、Excelの実行中に、メッセージボックス等が出たら…そのメッセージボックスのOKを押せないので、困ったことになります。なので… ・メッセージボックスが出ない設定にしないといけない。 ・マクロ等を実行するのなら、マクロセキュティを低に設定しないといけない。 ・マクロにエラーがないことをしっかり確認しなければいけない など、考慮しないといけないです。 他には…ちゃんと確認はしていませんが、Excelのライセンスあたりも微妙そうです。クライアント側もExcelのライセンスがないとダメとかいう話も…ほんとうかどうかは不明ですが。 あと…Excelは軽いソフトとはいえないので、たくさんのユーザーが、動作させたら…どうなるんでしょうね^^; このあたりは、イントラネットならさほど問題にはならないと思いますが… でも、PDFを出力するのが目的なら、ActiveReportsを利用するというのも手ですよ。購入する余裕があれば…ですが。 http://www.grapecity.com/japan/support/database/P7_330.htm 他にはこういう記事もあります。 http://www.atmarkit.co.jp/fdotnet/dotnettips/309aspgenpdf1/aspgenpdf1.html
お礼
qteaさんありがとうございます。 確かにタスクマネージャーでプロセスを見ると立ち上がっていました。 ASP.NETからACCESSのMDBをshell関数で呼んでも、MSACCESS.EXEしか タスクマネージャに存在していません。 また、呼んだMDBでは何の処理もされていませんでした。 出来ればもう少し分かりやすく説明していただければうれしいのですが。 よろしくお願いします。
- Bonjin
- ベストアンサー率43% (418/971)
>何も反応がありません 何を理由に「反応がない」と判断したのでしょうか? Webサーバ側でExcelを実行してもGUI(デスクトップ)がないのでエラーになるか見えないだけだと思いますよ。 >出来る方法を教えて下さいますようお願いします Excelを使って何をしたいのかで方法が変わってくると思います。 ワークブックを作ったりデータを変更したいならば http://msdn2.microsoft.com/ja-jp/library/microsoft.office.interop.excel(VS.80).aspx この辺りのサンプルコードを参考にすればできるかも知れません。 もう少し具体的に何をしたいのか書かれると具体的な回答がもらえると思います。
補足
Bonjinさんありがとうございます。 ASP.NETからexcelも呼びたいのですが、今考えているのは、ACCESSのデータベースに書き込み、レポート出力を「いきなりPDF」みたいなツールを 使ってサーバーにあるフォルダーに保管させ、Response.Writeでクライアントにダウンロード出来ないかなと思っております。 ASP.NETからACCESSのレポート出力が出来れば一番いいのですが。 出来ますでしょうか?
お礼
qteaさまへ 解答ありがとうございます。 明日会社で実験してみますので、また連絡させてもらいます。 ずっと困っていまして、親切な方で大変嬉しく思います。