3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Excelをサーバーサイドで実行するためのIIS設定【非推奨】

Last updated at Posted at 2022-05-11

はじめに

クライアント側のWeb画面操作をトリガーにして、IISのサーバー側で既存のExcelマクロ(秘伝のタレ的な業務ツール)を実行させたいという無茶な要求があり、試行錯誤したときのメモです。
同じサーバー内にて、タスクスケジューラ等を使用してExcelマクロをバッチ実行させている環境でもあります。

注意
MS Officeのサーバーサイド オートメーションはMicrosoftでは非推奨かつ動作保証されません。
また、ライセンスの問題も存在します。以下のリンク先を確認して自己責任でお願いします。
Office のサーバーサイド オートメーションについて

環境

  • Windows Server 2016
  • Microsoft Excel 2016
  • IIS 10

WebアプリはASP Classic(VBScript)で作成。
そんな化石みたいな技術を使うなという意見もあると思いますが、Visual Studioのライセンスが与えてもらえない状況下でしたのでこれが精一杯でした。
(拡張子.asp、文字コードUTF-8)

IISの設定

専用のアプリケーションプールを作成

IISマネージャーのアプリケーションプールの設定画面で以下画像のように設定する。
詳細設定 >

  • .Net CLRバージョン v4.0
  • 32ビット アプリケーションの有効化 True(後述のExcelの環境に依存する)
  • プロセスモデル > ID > カスタムアカウント
    カスタムアカウントはWebアプリを実行したいユーザー
    IISアプリケーションプール.png

参考文献

IIS ASP.NET でエクセルを使用する方法
https://itblogdsi.blog.fc2.com/blog-entry-418.html

DCOM設定関係

Excelの32bit/64bit判別

Excelのバージョン情報から32bit版か64bit版かを確認しておく
Excelバージョン.png

DCOM設定

コマンドプロンプトで mmc.exe comexp.msc /32
⇒後ろに/32をつけることで32bitアプリケーション用のコンポーネントサービスを呼び出せる。
(通常Excelは32bit版がインストールされているはずなので。ここは各自で確認してね)

DCOMの構成 > Microsoft Excel Application で右クリック > プロパティ
ID タブを選択 > 起動したユーザー
コンポーネントサービス.png

参考文献
http://cu-kansai-it.org/?p=453

64bit Windows 環境で 32bit の DCOM コンポーネントを登録しても一覧に表示されない
https://www.projectgroup.info/tips/Windows/comm_0060.html

Excel.applicationのローカルパスが空白になる
https://social.msdn.microsoft.com/Forums/ja-JP/9e71d56d-01f6-4949-b7de-ed235dff6362/excelapplication123981252512540124591252312497124731236431354303331?forum=aspnetja

Windows認証でDCOM起動可能にする設定

DCOMの設定「セキュリティ」タブと、IISマネージャーの認証の設定を以下の画像のように設定する。
※IISの認証の設定で、Windows認証以外の認証方法は無効にしておくこと

ユーザー「NETWORK」にローカルからの権限を付与してあげるのがポイント。
他のサイトでよく解説されている"IIS_IUSRS"に権限を与えてもWindows認証で接続してきたユーザー情報が取得できない。
⇒これが取得できないとWebアプリ内のユーザー認証機能が作れないので苦労する
IIS_Windows認証.png

メモ

・DCOM設定を特定のユーザ(このユーザー)に設定した場合の副作用
サーバーにログインして直接VBScriptからExcelマクロを叩く時(タスクスケジューラから起動する等)、最上位の特権でないとCreateObject("Excel.Application")で失敗する。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?