Question
『Excelアプリケーションスコープ』アクティビティの実行中に以下のエラーが発生します。
エラーメッセージ:
Excel アプリケーションスコープ: 型 ‘System.__ComObject’ の COM オブジェクトをインターフェイス型 ‘System.Runtime.InteropServices.ComTypes.IConnectionPointContainer’ にキャストできません。IID ‘{AAAAAAAA-AAAA-BBBB-CCCC-DDDDDDDDDDDD}’ が指定されたインターフェイスの COM コンポーネント上での QueryInterface 呼び出しのときに次のエラーが発生したため、この操作に失敗しました: 要求されたオブジェクトが存在しません。 (HRESULT からの例外:0x80010114)。
Answer
原因
ワークフロー内で『Excelアプリケーションスコープ』アクティビティが複数配置されている場合に稀に本事象が発生する場合があります。
Excelアプリケーションスコープを抜けてExcelプロセスが完全に終了される前に次のExcelアプリケーションスコープでExcelプロセスが起動してしまうと同時に複数のExcelプロセスが存在してしまうためです。
解決策
以下のいずれかの方法でエラーが解消するかお試しください。
回避策1:
『Excelアプリケーションスコープ』アクティビティのオプション「インスタンスのキャッシュ期間」を増やす。「インスタンスのキャッシュ期間」はExcelアクティビティパッケージv2.9.3以降で設定可能です。ここで設定された時間はExcelのプロセスが終了せずにキャッシュされるため、エラーの解消が期待できます。
回避策2:
『ワークフローファイルを呼び出し』アクティビティ使い、呼び出し先のワークフロー内で『Excelアプリケーションスコープ』アクティビティを使います。そして『ワークフローファイルを呼び出し』のオプション「分離」にチェックを入れます。「分離」することで別のExcelプロセスが呼び出されるためエラーの解消が期待できます。
回避策3:
『Excelアプリケーションスコープ』アクティビティの前後どちらかに『待機』アクティビティを入れます。『待機』を入れることでExcelのプロセスが終了する時間を確保できるため、エラーの解消が期待できます。
回避策4:
ワークフローの最初に『Excelアプリケーションスコープ』アクティビティを使いワークフロー内では使用しないExcelファイルをダミーとして開き、プロパティ>出力>ブックに変数を入力します。これによりExcelアプリケーションスコープを抜けてもExcelプロセスは終了されず実行された状態のままになるため、エラーの解消が期待できます。