トップ回答者
IISでのExcel起動の設定について

質問
-
Microsoft Excel 12.0 Object Libraryを参照設定し
ボタンコントロールを配置し次のコードを記述しました。
Dim MjobjExcel As Excel.Application
Dim MjobjExcelBook As Excel.Workbook
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
'オブジェクトのインスタンス作成
MjobjExcel = CType(CreateObject("Excel.Application"), _
Excel.Application)
MjobjExcelBook = CType(MjobjExcel.Workbooks.Add, _
Excel.Workbook)
'Excelを可視状態にしています。
MjobjExcel.Application.Visible = True
End SubIIS上でなく新しいWEBサイトをCドライブに保存し上のコードを打ったものをVisual Web DeveloperのF5を押して実行してみるとボタンを押せばきちんとExcelが起動するのですが
IIS上でボタンを押すと
MjobjExcel = CType(CreateObject("Excel.Application"), _
Excel.Application)のところで
--------------------------------------------------------------------
Exceptionはユーザーコードによってハンドルされませんでした。
ActiveXコンポーネントを作成できません。
--------------------------------------------------------------------
というエラーが出てしまいます。
IEツール→セキュリティ→インターネット→レベルのカスタマイズでActiveXを有効にしてもダメでした。
どうしたらIIS上でEXCELが使えるようになるのでしょうか?
設定などがあるのでしょうか?おしえてください。
回答
-
デバッグされているPCのOSは何をご利用でしょうか?
今私の手元には、XP Pro の環境しかないため、
XPで検証しようとしている場合のお話になってしまいますが、
下記をお試し頂いても宜しいでしょうか?
1.[スタート]⇒[ファイル名を指定して実行]を選択し、「dcomcnfg」と入力&OKボタンを押す。2.[コンソール ルート]⇒[コンポーネント サービス]⇒[コンピュータ]⇒[マイ コンピュータ]⇒
[DCOMの構成]を階層を下げてそれぞれ選択する3.「Microsoft Excel Application」を右Clickし、[プロパティ]を選択する
4.[セキュリティ]タブを選択し、「構成のアクセス許可」で、[編集]ボタンを追加する
5.[追加]ボタンを押し、「ASPNET」ユーザを追加する
6.ASPNETユーザを追加し終わったら、念のためIISを再起動してみる
恐らく権限関係が原因だと思われますので、一度、上記をお試し下さい。
もし上記設定を行っても解消されない場合は、「NetWork Serviceアカウント」のからみかもしれませんね。
その時はまたお尋ね下さい。
-
やめといたほうがいいと思いますけど一応参考に
http://support.microsoft.com/kb/257757/ja
しかし
komi1 さんからの引用 上記の操作してみましたが残念ながら
状況は変わりませんでした。
また教えていただいたNetWork Serviceアカウントも下記の手順で追加してみました
- レジストリ エディタ ツールの Regedit.exe を起動。
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\フォルダで右クリックし、[アクセス許可] をクリック。
- [Eventlogのアクセス許可] ダイアログ ボックスで、[追加] をクリック。
- [ユーザまたはグループの選択] ダイアログ ボックス上のテキスト ボックスに “NETWORK SERVICE” と入力して、[名前の確認] をクリック。Network Service 名の下にアンダーラインが引かれ、有効なセキュリティ プリンシパルであることが示されたので[OK] をクリック。
- [Eventlogのアクセス許可] ダイアログ ボックスで、一覧から [Network Service] ユーザー名をクリックし、[NETWORK SERVICEのアクセス許可] セクションで、[許可] 欄下の [フル コントロール] チェック ボックスをオンにし[適用] をクリックし、[OK] をクリック。
それでも、状況は変わりません。1~5の手順で、[ASPNETのアクセス許可] もしてみました。
他に考えられる原因はないでしょうか?
何かあるようでしたらよろしくお願いします。
なにをやってるんでしょうか?
すべての返信
-
デバッグされているPCのOSは何をご利用でしょうか?
今私の手元には、XP Pro の環境しかないため、
XPで検証しようとしている場合のお話になってしまいますが、
下記をお試し頂いても宜しいでしょうか?
1.[スタート]⇒[ファイル名を指定して実行]を選択し、「dcomcnfg」と入力&OKボタンを押す。2.[コンソール ルート]⇒[コンポーネント サービス]⇒[コンピュータ]⇒[マイ コンピュータ]⇒
[DCOMの構成]を階層を下げてそれぞれ選択する3.「Microsoft Excel Application」を右Clickし、[プロパティ]を選択する
4.[セキュリティ]タブを選択し、「構成のアクセス許可」で、[編集]ボタンを追加する
5.[追加]ボタンを押し、「ASPNET」ユーザを追加する
6.ASPNETユーザを追加し終わったら、念のためIISを再起動してみる
恐らく権限関係が原因だと思われますので、一度、上記をお試し下さい。
もし上記設定を行っても解消されない場合は、「NetWork Serviceアカウント」のからみかもしれませんね。
その時はまたお尋ね下さい。
-
上記の操作してみましたが残念ながら
状況は変わりませんでした。
また教えていただいたNetWork Serviceアカウントも下記の手順で追加してみました
- レジストリ エディタ ツールの Regedit.exe を起動。
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\フォルダで右クリックし、[アクセス許可] をクリック。
- [Eventlogのアクセス許可] ダイアログ ボックスで、[追加] をクリック。
- [ユーザまたはグループの選択] ダイアログ ボックス上のテキスト ボックスに “NETWORK SERVICE” と入力して、[名前の確認] をクリック。Network Service 名の下にアンダーラインが引かれ、有効なセキュリティ プリンシパルであることが示されたので[OK] をクリック。
- [Eventlogのアクセス許可] ダイアログ ボックスで、一覧から [Network Service] ユーザー名をクリックし、[NETWORK SERVICEのアクセス許可] セクションで、[許可] 欄下の [フル コントロール] チェック ボックスをオンにし[適用] をクリックし、[OK] をクリック。
それでも、状況は変わりません。1~5の手順で、[ASPNETのアクセス許可] もしてみました。
他に考えられる原因はないでしょうか?
何かあるようでしたらよろしくお願いします。
-
やめといたほうがいいと思いますけど一応参考に
http://support.microsoft.com/kb/257757/ja
しかし
komi1 さんからの引用 上記の操作してみましたが残念ながら
状況は変わりませんでした。
また教えていただいたNetWork Serviceアカウントも下記の手順で追加してみました
- レジストリ エディタ ツールの Regedit.exe を起動。
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\フォルダで右クリックし、[アクセス許可] をクリック。
- [Eventlogのアクセス許可] ダイアログ ボックスで、[追加] をクリック。
- [ユーザまたはグループの選択] ダイアログ ボックス上のテキスト ボックスに “NETWORK SERVICE” と入力して、[名前の確認] をクリック。Network Service 名の下にアンダーラインが引かれ、有効なセキュリティ プリンシパルであることが示されたので[OK] をクリック。
- [Eventlogのアクセス許可] ダイアログ ボックスで、一覧から [Network Service] ユーザー名をクリックし、[NETWORK SERVICEのアクセス許可] セクションで、[許可] 欄下の [フル コントロール] チェック ボックスをオンにし[適用] をクリックし、[OK] をクリック。
それでも、状況は変わりません。1~5の手順で、[ASPNETのアクセス許可] もしてみました。
他に考えられる原因はないでしょうか?
何かあるようでしたらよろしくお願いします。
なにをやってるんでしょうか?
-
セキュリティ」タブの「起動許可」「起動とアクティブ化のアクセス許可」「構成のアクセス許可」の「カスタマイズ」を選択し、「編集」ボタンを押してアカウントを追加する作業と「ID」タグを対話ユーザーにすることでサーバーのパソコンからはButton1をクリックするとエクセルを起動することができるようになりましたがクライアント側のパソコンではButtonをクリックしてもエクセルが起動されず、エラーもでないで何も反応が無いそのままの画面の状態です。
クライアント側のパソコンに信頼済みサイトの追加もしたのですが同じ状態です。
ActivXを有効にするでみてみたのですがそれでもダメでした。
クライアント側の設定はどうしたらいいのでしょうか?
-
komi1 さんからの引用 サーバーのパソコンからはButton1をクリックするとエクセルを起動することができるようになりましたがクライアント側のパソコンではButtonをクリックしてもエクセルが起動されず、エラーもでないで何も反応が無いそのままの画面の状態です。 すいません、やりたいことというのは、サーバー側でExcelファイルを作ったり、操作したりする
お話ではなく、クライアント側でExcelを開いたり・操作したいということなのでしょうか?(しかしお見受けしたソースは、ASP.NETで記述されたサーバー側の処理ですよね・・・)
イマイチ、どんな仕様で動かしたいのかが伝わってこないので、補足頂けますか?
例えば、サーバー側で処理したExcelをクライアントで開きたいという意味なのか? など・・・
お話を伺ってると、クライアント側とサーバー側を混同されているように見受けられるところがあるので、
具体的に、何をしたくて、どんな結果を望んでいるのか、詳しい補足を下さい。
#ちなみに今、やろうとされていることは、クライアント側でどんな設定しても動かないですよ。
おつくりになられたコードは、サーバー側で動かした結果なのですから・・・
クライアント側で表示するには、またExcelファイルをダウンロードさせるような仕組みが必要です。
もう少しどんな動きをさせたいのか整理した上で、ご連絡頂けると助かります。宜しくお願いします。
-
サーバー側でしか、Excelファイルを表示できないのでしょうか??
やりたいことは
GridViewをExcelファイルにして
そこから表計算などをして、クライアント側で保存などができるようにしたいのですが。
何か参考になるHPなどはあるでしょうか??
http://anetm.com/dev/tools/vbdotnet/112217.htm
をみて、関数などを入れているのでGridViewをExcelファイルにしてそれを
VBAのようにエクセルを操作してクライアントに見せれると思ったのですが
これはサーバ側のみ可能なことなのでしょうか??
-
> サーバー側でしか、Excelファイルを表示できないのでしょうか??
> やりたいことは
> GridViewをExcelファイルにして
> そこから表計算などをして、クライアント側で保存などができるようにしたいのですが。
> 何か参考になるHPなどはあるでしょうか??
> http://anetm.com/dev/tools/vbdotnet/112217.htm
> をみて、関数などを入れているのでGridViewをExcelファイルにしてそれを
> VBAのようにエクセルを操作してクライアントに見せれると思ったのですが
> これはサーバ側のみ可能なことなのでしょうか??Excelが動くのはあくまでもサーバーで、クライアントで動く訳ではありません。
Webの仕組み上、自動的にクライアントにインストールされたアプリケーションを動かすことはできません。もし、この様な事をするのであれば、以下の手順になります。
1.サーバーでExcelのオブジェクトを作成してXLSファイルを生成。
2.作成したファイルをクライアントにダウンロード
※勿論、クライアントにExcelがインストールされている必要があります。ただしWebサーバーでExcelを起動すること自体、今回のアクセス権の問題や、
エラーが発生した時にプロセスが残ったままとなりますので、あまり推奨はしません。
(あと、ライセンスの問題とか)どうしてもXLSファイルを生成する必要があるのであれば、Excel Servicesを使ってみてはどうでしょうか?
http://msdn.microsoft.com/ja-jp/library/ms519581.aspxというより今回の要件だと、サーバーでテキストファイル(カンマ区切りやタブ区切り)を作成して、
それをダウンロードする仕組みを作って、クライアントで開けば解決するような気がします。
(計算式を設定するなら別ですが) -
komi1 さんからの引用 やりたいことは
GridViewをExcelファイルにして
そこから表計算などをして、クライアント側で保存などができるようにしたいのですが。
いまさら回答するのもなんですが、もし、上記の目的のみ果たせればよいという
ことでしたら、GridView を Excel ファイルにしてクライアントにダウンロードしても
らい、そこから後はクライアント側で Excel を起動して「表計算などをして、クライ
アント側で保存」ということではどうですか?
それでよければ、そのコードはこのフォーラムに記載されていましたし、
GridViewをExcelに書き出す際の原因不明のエラーについて
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=3475728&SiteID=7GridView, Excel をキーワードに検索すれば参考になるサイトが多数あります。
例えば、
Extensive Study of GridView Export to Excel
http://gridviewguy.com/ArticleDetails.aspx?articleID=197