locked
APPVで配信したVS2003(VB)で作成したシステムからEXCEL出力が出来ない RRS feed

  • 質問

  • タイトル内容で困っています。

    現在の環境は、

    サーバー:Windows2008Sever R2

    クライアント:Windwos XP SP3

    APP-V:APP-V 4.5

    作成したシステムは、Visual Studio 2003 (VB)で作成しています。

    このシステムから、Excel出力(Interop.Excel.DLL を使用しています)を行うと、出力先ダイアログボックスは表示されるのですが、その後

    このメッセージが表示され、『いいえ』を押すと

    このメッセージが表示され、EXCELは出力されません。

    クライアントパソコンのOfficeは2003です。また、完全インストールでインストールしています。

    取り込みも同じように処理できません。

    同システムをローカルドライブにインストールして起動した場合は、正常にEXCEL出力できました。

    よろしくお願いします。


    2011年12月24日 5:13

回答

  • どうもです。

    念のため、本当にVBAに関するモジュールがOfficeにインストールされているかを確認してみるのもいいと思います。

    また、最小限の再現コードをVBScriptなどで簡単に記述すると、切り分けがスムーズに行くかもしれません。

    ExcelオブジェクトをCOM操作で、作成できるのか、できないのか

    提示されたエラーメッセージは、XLSファイルにあるマクロを実行した際に表示されたものと思いますので
    まずは、Excelオブジェクトの作成ができるか?
    マクロの実行ができるか?
    と順番で確認してみます。

    雰囲気だけのVBScriptのコード例です。(hoge.vbs)
    Dim objExcel
    Set objExcel = CreateObject("Excel.Application")
    objExcel.Visible = True
    msgbox "Excel 起動した?"

    'その後、XLSファイルを開いて
    'マクロ実行

    objExcel.Quit
    set objExcel = Nothing
    みたいな簡単なVBScriptを作成します。

    これを、非App-V環境のネイティブで動作を確認してから
    App-V環境からWScript.exeを実行してみます。

    仮想環境で任意のプログラムを起動する方法は、こんな感じです。
    sfttray.exe /exe cmd.exe  /launch "仮想アプリの名前" 
    ※App-Vで配信されたショートカットのパラメータに /exe cmd.exeを加えると
    cmd.exeが実行されます。

    その後cmd.exe(仮想空間で動作しているもの)でwscript.exe "hoge.vbs"

    として実行してみます。
    問題あれば、次の調査に進みます。

    Officeに関する、仮想レジストリ、仮想ファイルシステムが
    パッケージに含まれてしまっているために、中途半端な状態のOfficeが起動されてしまっている
    可能性があるので、
    シーケンサーで仮想レジストリのOfficeに関連しそうな物があれば
    消すか、ローカルキーの上書きを行います。
    仮想ファイルシステムにもOffice関連の物があれば
    消すか、ローカルのマージを設定します。

    最悪、App-Vのパッケージに対象のVBアプリと、Office2003を丸ごといれた
    大きなパッケージを作成して、そもそも、動作するのかを確認します。

    あとは、App-Vクライアント、シーケンサー含め最新のVersion4.6SP1を利用してみます。

    まとまらない、文章ですが
    がんばってください。 


    tune
    • 回答としてマーク 田中夢 2012年1月17日 5:40
    2011年12月28日 5:04

すべての返信

  • どうもです。

    念のため、本当にVBAに関するモジュールがOfficeにインストールされているかを確認してみるのもいいと思います。

    また、最小限の再現コードをVBScriptなどで簡単に記述すると、切り分けがスムーズに行くかもしれません。

    ExcelオブジェクトをCOM操作で、作成できるのか、できないのか

    提示されたエラーメッセージは、XLSファイルにあるマクロを実行した際に表示されたものと思いますので
    まずは、Excelオブジェクトの作成ができるか?
    マクロの実行ができるか?
    と順番で確認してみます。

    雰囲気だけのVBScriptのコード例です。(hoge.vbs)
    Dim objExcel
    Set objExcel = CreateObject("Excel.Application")
    objExcel.Visible = True
    msgbox "Excel 起動した?"

    'その後、XLSファイルを開いて
    'マクロ実行

    objExcel.Quit
    set objExcel = Nothing
    みたいな簡単なVBScriptを作成します。

    これを、非App-V環境のネイティブで動作を確認してから
    App-V環境からWScript.exeを実行してみます。

    仮想環境で任意のプログラムを起動する方法は、こんな感じです。
    sfttray.exe /exe cmd.exe  /launch "仮想アプリの名前" 
    ※App-Vで配信されたショートカットのパラメータに /exe cmd.exeを加えると
    cmd.exeが実行されます。

    その後cmd.exe(仮想空間で動作しているもの)でwscript.exe "hoge.vbs"

    として実行してみます。
    問題あれば、次の調査に進みます。

    Officeに関する、仮想レジストリ、仮想ファイルシステムが
    パッケージに含まれてしまっているために、中途半端な状態のOfficeが起動されてしまっている
    可能性があるので、
    シーケンサーで仮想レジストリのOfficeに関連しそうな物があれば
    消すか、ローカルキーの上書きを行います。
    仮想ファイルシステムにもOffice関連の物があれば
    消すか、ローカルのマージを設定します。

    最悪、App-Vのパッケージに対象のVBアプリと、Office2003を丸ごといれた
    大きなパッケージを作成して、そもそも、動作するのかを確認します。

    あとは、App-Vクライアント、シーケンサー含め最新のVersion4.6SP1を利用してみます。

    まとまらない、文章ですが
    がんばってください。 


    tune
    • 回答としてマーク 田中夢 2012年1月17日 5:40
    2011年12月28日 5:04
  • tunemickyさん

    アドバイスありがとうございます。

    また、確認が遅くなり、お礼の返信も遅くなってすいません。

    内容を確認しました。

    あれからいろいろと試していますが、大きな進展はないです。

    tunemickyの内容で一度試してみたいと思います。

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

     

     

     

    2011年12月31日 1:16
  • こんにちは。
    フォーラム オペレーターの田中夢です。

    tunemicky さん
    参考になるアドバイスをありがとうございます。

    momotaro10 さん
    その後の方針についてご連絡を頂きありがとうございます。
    今回、tunemicky さんの投稿を参考をトラブルシューティングの参考にしていただけたようですので、勝手ながら私のほうで [回答としてマーク] とさせていただきますね。

     
    また何かありましたら、TechNet フォーラムをご利用くださいね。
    ---------------------------------------------------------------------
    日本マイクロソフト株式会社 フォーラム オペレーター 田中夢

    2012年1月17日 5:40
  • だいぶ時間が経ってしまいましたが、Interop.Excel.DLLのエラーなので、
    Excelをインストール+キャプチャする際に、.netframeworkがWindowsXPにインストールされていないと
    Excelをフルインストールしても、そのアッセンブリは、インストールされませんね。
    インストールオプションに表示されなかったきがします。(.netが入っていない場合は、インストールすることができないので、選択肢にそもそも現れない)

    なので、シーケンスする際に、.netframeworkも含めて、キャプチャするか。

    シーケンサーを動かす前に、.netframeworkを予めインストールしておいてから、

    シーケンサーを動かしてExcelのフルインストールを行えば、Interop.Excel.DLLもキャプチャされると思います。


    tune

    2012年4月9日 2:41