質問: CakePHPのシステムでExcelの帳票出力を行っているのですが、 帳票出力の元となるExcelファイルが開けずに困っています。 帳票出力自体はPHPのシェルスクリプトとなっていて、 コマンドを実行してバックグラウンドで帳票ファイルを作成するのですが、 直接コマンドを実行するとファイルが作成されるのに、PHPからコマンドを実行すると $hoge->Workbooks->Open($filepath) の実行でタイムアウトとなってしまいます。 動かしているサーバーはWindows7なのですが、 タイムアウトとなった状況でプロセスを確認すると Excelのプロセスが動いたままとなり、そのプロセスを終了させると、 エラーコード:-2147023170 エラーメッセージ:Error [0x800706be] リモート プロシージャ コールに失敗しました。 と表示されます。 以前に別の理由でExcelファイルが開けず帳票出力ができなかったときは、 C:\Windows\System32\config\systemprofile\ 上に"Desktop"フォルダを作成することで 帳票出力まで問題なく完了していたのですが、 別の修正を行っているうちにこのような状況になってしまいました。 (別修正を戻しても状況は変わりませんでした。) 正直に言って、私ではもう手詰まり状態です。 状況の原因、対応について、何かご存知の方がいらっしゃったら ご教授をお願いできませんでしょうか。 以上、よろしくお願いいたします。
回答: マルチポストするぐらいなので回答を期待されていないとは思いますが... Officeは対話型で動作するよう設計されており、無人実行できるようには設計されていません。動作しないのであればあきらめてください。またWebシステムで第三者がアクセス可能となる場合、ライセンス違反の可能性も出てきますので、お気を付けください。 Office のサーバーサイド オートメーションについてより > > 現在のすべてのバージョンの Microsoft Office は、クライアント ワークステーション上でエンドユーザー製品として実行するように設計、テスト、および設定されています。これらの製品は、対話型デスクトップおよびユーザー プロファイルを想定しており、無人実行されるように設計されたサーバーサイド コンポーネントの必要性を満たすための再入可能性やセキュリティのレベルは提供されません。 > > > **マイクロソフトは、現在のところ、無人の非対話型クライアント アプリケーションまたはコンポーネント (ASP、ASP.NET、DCOM、および NT サービスを含む) からの Microsoft Office アプリケーションのオートメーションに関して、推奨もサポートも行っていません。それは、このような環境で Office を実行した場合、Office で不安定な動作やデッドロックが発生する可能性があるためです。** > > > Office サーバー サイド オートメーションの危険性についてより > > Office のサーバー サイド オートメーション (非対話型オートメーション) を、マイクロソフトはサポートしておりません。 > > > クライアント側に Office 製品をインストールせずに、サーバーにインストールされた Office クライアント アプリケーションを使用したオートメーションを実施して、クライアント側の処理をサーバー側で集中して代行するなどの運用を実施した場合や、同様のソリューションをエンドユーザーに提供した場合は、Microsoft 製品に対するライセンス違反にも該当します。 > > また、技術的な観点からもこれらの実装は危険であるため、実装しないでください。 > > >