none
IISでのExcel起動の設定について RRS feed

  • 質問

  • 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 Sub

     

     

    IIS上でなく新しいWEBサイトをCドライブに保存し上のコードを打ったものをVisual Web DeveloperのF5を押して実行してみるとボタンを押せばきちんとExcelが起動するのですが

     

    IIS上でボタンを押すと

            MjobjExcel = CType(CreateObject("Excel.Application"), _
                         Excel.Application)

    のところで

    --------------------------------------------------------------------

    Exceptionはユーザーコードによってハンドルされませんでした。

    ActiveXコンポーネントを作成できません。

    --------------------------------------------------------------------

    というエラーが出てしまいます。

    IEツール→セキュリティ→インターネット→レベルのカスタマイズでActiveXを有効にしてもダメでした。

     

    どうしたらIIS上でEXCELが使えるようになるのでしょうか?

    設定などがあるのでしょうか?おしえてください。

    2008年7月13日 5:22

回答

  • デバッグされているPCのOSは何をご利用でしょうか?

     

    今私の手元には、XP Pro の環境しかないため、
    XPで検証しようとしている場合のお話になってしまいますが、
    下記をお試し頂いても宜しいでしょうか?


    1.[スタート]⇒[ファイル名を指定して実行]を選択し、「dcomcnfg」と入力&OKボタンを押す。

     

    2.[コンソール ルート]⇒[コンポーネント サービス]⇒[コンピュータ]⇒[マイ コンピュータ]⇒
      [DCOMの構成]を階層を下げてそれぞれ選択する

     

    3.「Microsoft Excel Application」を右Clickし、[プロパティ]を選択する

     

    4.[セキュリティ]タブを選択し、「構成のアクセス許可」で、[編集]ボタンを追加する

     

    5.[追加]ボタンを押し、「ASPNET」ユーザを追加する

     

    6.ASPNETユーザを追加し終わったら、念のためIISを再起動してみる

     

    恐らく権限関係が原因だと思われますので、一度、上記をお試し下さい。

    もし上記設定を行っても解消されない場合は、「NetWork Serviceアカウント」のからみかもしれませんね。

    その時はまたお尋ね下さい。

    2008年7月14日 4:53
  • このコードだと、「エクセルが終了しません!!」と、質問をしなきゃいけなくなる。

     

    サーバでエクセルを起動させるのはライセンス上の問題もあります。

    複数の人が同時にアクセスしてきたときに、安全なのかどうかという問題もあります。

    何より、サーバ上でエクセルを起動させることは、マイクロソフトが動作を保証していません。

    情報の収集と設計からやり直すのが無難かと思います。

    2008年7月15日 2:54
  • やめといたほうがいいと思いますけど一応参考に

    http://support.microsoft.com/kb/257757/ja

     

    しかし

     komi1 さんからの引用

    上記の操作してみましたが残念ながら

    状況は変わりませんでした。

     

    また教えていただいたNetWork Serviceアカウントも下記の手順で追加してみました

    1. レジストリ エディタ ツールの Regedit.exe を起動。
    2. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\フォルダで右クリックし、[アクセス許可] をクリック。
    3. [Eventlogのアクセス許可] ダイアログ ボックスで、[追加] をクリック。
    4. [ユーザまたはグループの選択] ダイアログ ボックス上のテキスト ボックスに “NETWORK SERVICE” と入力して、[名前の確認] をクリック。Network Service 名の下にアンダーラインが引かれ、有効なセキュリティ プリンシパルであることが示されたので[OK] をクリック。
    5. [Eventlogのアクセス許可] ダイアログ ボックスで、一覧から [Network Service] ユーザー名をクリックし、[NETWORK SERVICEのアクセス許可] セクションで、[許可] 欄下の [フル コントロール] チェック ボックスをオンにし[適用] をクリックし、[OK] をクリック。

    それでも、状況は変わりません。1~5の手順で、[ASPNETのアクセス許可] もしてみました。

    他に考えられる原因はないでしょうか?

    何かあるようでしたらよろしくお願いします。

    なにをやってるんでしょうか?

    2008年7月15日 14:31
  • ありがとうございます。

    これが使えるようになればやりたいことができます。

    今の能力ではとても理解するのに時間がかかりそうですが

    覚えていきたいとおもいます。

    ありがとうございました。

    2008年7月23日 14:49

すべての返信

  • デバッグされているPCのOSは何をご利用でしょうか?

     

    今私の手元には、XP Pro の環境しかないため、
    XPで検証しようとしている場合のお話になってしまいますが、
    下記をお試し頂いても宜しいでしょうか?


    1.[スタート]⇒[ファイル名を指定して実行]を選択し、「dcomcnfg」と入力&OKボタンを押す。

     

    2.[コンソール ルート]⇒[コンポーネント サービス]⇒[コンピュータ]⇒[マイ コンピュータ]⇒
      [DCOMの構成]を階層を下げてそれぞれ選択する

     

    3.「Microsoft Excel Application」を右Clickし、[プロパティ]を選択する

     

    4.[セキュリティ]タブを選択し、「構成のアクセス許可」で、[編集]ボタンを追加する

     

    5.[追加]ボタンを押し、「ASPNET」ユーザを追加する

     

    6.ASPNETユーザを追加し終わったら、念のためIISを再起動してみる

     

    恐らく権限関係が原因だと思われますので、一度、上記をお試し下さい。

    もし上記設定を行っても解消されない場合は、「NetWork Serviceアカウント」のからみかもしれませんね。

    その時はまたお尋ね下さい。

    2008年7月14日 4:53
  • このコードだと、「エクセルが終了しません!!」と、質問をしなきゃいけなくなる。

     

    サーバでエクセルを起動させるのはライセンス上の問題もあります。

    複数の人が同時にアクセスしてきたときに、安全なのかどうかという問題もあります。

    何より、サーバ上でエクセルを起動させることは、マイクロソフトが動作を保証していません。

    情報の収集と設計からやり直すのが無難かと思います。

    2008年7月15日 2:54
  • 上記の操作してみましたが残念ながら

    状況は変わりませんでした。

     

    また教えていただいたNetWork Serviceアカウントも下記の手順で追加してみました

    1. レジストリ エディタ ツールの Regedit.exe を起動。
    2. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\フォルダで右クリックし、[アクセス許可] をクリック。
    3. [Eventlogのアクセス許可] ダイアログ ボックスで、[追加] をクリック。
    4. [ユーザまたはグループの選択] ダイアログ ボックス上のテキスト ボックスに “NETWORK SERVICE” と入力して、[名前の確認] をクリック。Network Service 名の下にアンダーラインが引かれ、有効なセキュリティ プリンシパルであることが示されたので[OK] をクリック。
    5. [Eventlogのアクセス許可] ダイアログ ボックスで、一覧から [Network Service] ユーザー名をクリックし、[NETWORK SERVICEのアクセス許可] セクションで、[許可] 欄下の [フル コントロール] チェック ボックスをオンにし[適用] をクリックし、[OK] をクリック。

    それでも、状況は変わりません。1~5の手順で、[ASPNETのアクセス許可] もしてみました。

    他に考えられる原因はないでしょうか?

    何かあるようでしたらよろしくお願いします。

    2008年7月15日 13:32
  • やめといたほうがいいと思いますけど一応参考に

    http://support.microsoft.com/kb/257757/ja

     

    しかし

     komi1 さんからの引用

    上記の操作してみましたが残念ながら

    状況は変わりませんでした。

     

    また教えていただいたNetWork Serviceアカウントも下記の手順で追加してみました

    1. レジストリ エディタ ツールの Regedit.exe を起動。
    2. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\フォルダで右クリックし、[アクセス許可] をクリック。
    3. [Eventlogのアクセス許可] ダイアログ ボックスで、[追加] をクリック。
    4. [ユーザまたはグループの選択] ダイアログ ボックス上のテキスト ボックスに “NETWORK SERVICE” と入力して、[名前の確認] をクリック。Network Service 名の下にアンダーラインが引かれ、有効なセキュリティ プリンシパルであることが示されたので[OK] をクリック。
    5. [Eventlogのアクセス許可] ダイアログ ボックスで、一覧から [Network Service] ユーザー名をクリックし、[NETWORK SERVICEのアクセス許可] セクションで、[許可] 欄下の [フル コントロール] チェック ボックスをオンにし[適用] をクリックし、[OK] をクリック。

    それでも、状況は変わりません。1~5の手順で、[ASPNETのアクセス許可] もしてみました。

    他に考えられる原因はないでしょうか?

    何かあるようでしたらよろしくお願いします。

    なにをやってるんでしょうか?

    2008年7月15日 14:31
  • ご回答ありがとうごじます。

    参考のHPを読んで危険性などがわかりましたが

    セキュリティ面では、LANのみにしているので心配はないと考えて

    EXCELでいろいろな編集をできるようにしたいと考えています。

     

    すみません。読んではみたのですが、

    どうやったらEXCELが起動するようになるのかが

    わかりません。

     

    どのようにしたらいいのでしょうか?

    すみません。知識不足ですが、覚えていきたいです。

    ご教授いただきたくお願いします。

    2008年7月16日 16:04
  • ASP.NET アカウントに Excel の起動許可が与えられていないからじゃないですか?

     

    「管理ツール」-「コンポーネントサービス」を起動する

    「コンポーネント サービス」-「コンピュータ」-「マイ コンピュータ」-「DCOM の構成」から「Microsoft Excel アプリケーション」のプロパティを表示させる

    「セキュリティ」タブの「起動許可」グループで「カスタマイズ」を選択し、「編集」ボタンを押してアカウントを追加する

     

    多分これでできると思いますがアカウントを偽装する方がいいと思いますよ。

    2008年7月16日 19:11
  •  

    セキュリティ」タブの「起動許可」「起動とアクティブ化のアクセス許可」「構成のアクセス許可」の「カスタマイズ」を選択し、「編集」ボタンを押してアカウントを追加する作業と「ID」タグを対話ユーザーにすることでサーバーのパソコンからはButton1をクリックするとエクセルを起動することができるようになりましたがクライアント側のパソコンではButtonをクリックしてもエクセルが起動されず、エラーもでないで何も反応が無いそのままの画面の状態です。

     

    クライアント側のパソコンに信頼済みサイトの追加もしたのですが同じ状態です。

    ActivXを有効にするでみてみたのですがそれでもダメでした。

    クライアント側の設定はどうしたらいいのでしょうか?

    2008年7月17日 14:10
  •  komi1 さんからの引用
    サーバーのパソコンからはButton1をクリックするとエクセルを起動することができるようになりましたがクライアント側のパソコンではButtonをクリックしてもエクセルが起動されず、エラーもでないで何も反応が無いそのままの画面の状態です。

     

    すいません、やりたいことというのは、サーバー側でExcelファイルを作ったり、操作したりする
    お話ではなく、クライアント側でExcelを開いたり・操作したいということなのでしょうか?

    (しかしお見受けしたソースは、ASP.NETで記述されたサーバー側の処理ですよね・・・)

     

    イマイチ、どんな仕様で動かしたいのかが伝わってこないので、補足頂けますか?

    例えば、サーバー側で処理したExcelをクライアントで開きたいという意味なのか? など・・・

     

    お話を伺ってると、クライアント側とサーバー側を混同されているように見受けられるところがあるので、

    具体的に、何をしたくて、どんな結果を望んでいるのか、詳しい補足を下さい。

     

    #ちなみに今、やろうとされていることは、クライアント側でどんな設定しても動かないですよ。

     おつくりになられたコードは、サーバー側で動かした結果なのですから・・・ 

     クライアント側で表示するには、またExcelファイルをダウンロードさせるような仕組みが必要です。

     もう少しどんな動きをさせたいのか整理した上で、ご連絡頂けると助かります。宜しくお願いします。

     

    2008年7月18日 9:54
  • サーバー側でしか、Excelファイルを表示できないのでしょうか??

    やりたいことは

    GridViewをExcelファイルにして

    そこから表計算などをして、クライアント側で保存などができるようにしたいのですが。

    何か参考になるHPなどはあるでしょうか??

    http://anetm.com/dev/tools/vbdotnet/112217.htm

    をみて、関数などを入れているのでGridViewをExcelファイルにしてそれを

    VBAのようにエクセルを操作してクライアントに見せれると思ったのですが

    これはサーバ側のみ可能なことなのでしょうか??

    2008年7月21日 9:49
  • > サーバー側でしか、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

     

    というより今回の要件だと、サーバーでテキストファイル(カンマ区切りやタブ区切り)を作成して、
    それをダウンロードする仕組みを作って、クライアントで開けば解決するような気がします。
    (計算式を設定するなら別ですが)

    2008年7月22日 3:18
  • ありがとうございます。

    これが使えるようになればやりたいことができます。

    今の能力ではとても理解するのに時間がかかりそうですが

    覚えていきたいとおもいます。

    ありがとうございました。

    2008年7月23日 14:49
  •  komi1 さんからの引用

    やりたいことは

    GridViewをExcelファイルにして

    そこから表計算などをして、クライアント側で保存などができるようにしたいのですが。

     

    いまさら回答するのもなんですが、もし、上記の目的のみ果たせればよいという

    ことでしたら、GridView を Excel ファイルにしてクライアントにダウンロードしても

    らい、そこから後はクライアント側で Excel を起動して「表計算などをして、クライ

    アント側で保存」ということではどうですか?

     

    それでよければ、そのコードはこのフォーラムに記載されていましたし、

     

    GridViewをExcelに書き出す際の原因不明のエラーについて
    http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=3475728&SiteID=7

    GridView, Excel をキーワードに検索すれば参考になるサイトが多数あります。

    例えば、

     

    Extensive Study of GridView Export to Excel
    http://gridviewguy.com/ArticleDetails.aspx?articleID=197

     

    2008年7月27日 1:26