- 締切済み
VC++アプリからEXCELを起動できない。
じんちゃんと申します。 EXCEL2003をVCアプリからバックグラウンド起動したいのですが上手くいきません。 どなたかご存知でしたら助けてください。主な条件は次の通りです。 [概要] VCアプリ内でCreateProcess()を用いてEXCEL.EXEをブック(.xls)引数で起動しています(ブックはマクロ付き)。 [環境] ・EXCEL2003のみの製品をインストール。 VB6.0のランタイムを入れています。 Framework1.1も念のため入れました。 ・VC++.Netで開発したEXEからEXCELを起動しています。 ・OSはWindowsXP SP2です。 ・以前は動いていたのですがある日以降動かなくなりました。 ・現在でも起動対象ブックを手動で起動すると画面が問題なく表示されます。 [現象] 1.起動するとEXCELの起動ロゴが一瞬表示されるが起動しない。 タスクマネージャを見てもEXCEL.EXEが存在しない。 2.起動失敗後、対象ブックを手動で開くとセーフモード起動を聞かれます。 加えて起動後、マクロセキュリティを低に設定していたのが強制的に高 に設定されてしまっています。 手動起動後、以降、セーフモード起動は聞かれません。 CreateProcess()からの起動(バックグラウンド起動)した場合にのみ起動失敗します。 3.EXCEL2003を再度インストールして実施しても変化なし。 4.CreateProcess()の戻り値は正常でした。 5.他のNOTEPAD.EXEをEXCEL.EXEに変更して起動すると表示される。 恐らくEXCEL2003のみの固有問題と思います。 他のEXCELバージョンでは問題なく起動できます。 6.EXCEL2003だとブック指定なしでEXCEL.EXEを単体起動しても起動に失敗します。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- YukiHanabi
- ベストアンサー率46% (6/13)
EXCEL2003のみの固有問題と予測しているのなら CreateProcessからShellExecuteに変更したときは、どうですか char File_char[] = "C:\\File.xls"; ShellExecute( 0,"open", File_char, "", "", SW_SHOWMINNOACTIVE); //アニメーションを好まないときは、SW_MAXIMIZEやSW_HIDEなどに変更。 ほかにCOMをもちいて起動する方法もありますよ。 http://www16.plala.or.jp/web-yukimaturi/programming-e2003.html
お礼
お返事ありがとうございます。 昨日判明した事実ですが、呼び出し元プロセスのある処理を通さ なければ起動できることが判明しました。 CreateProcess()が正常リターン、及びEXCEL起動ロゴが一瞬出る のでAPPの問題とはあまり考えていませんでしたが、APPのメ モリリークなどの想定外問題が原因と今は考えています。 起動方法を変えて緊急対策的に処置をまずはしてみようと考えて います。ご教示ありがとうございました。