Excel アクティビティ パッケージを使ってExcel を自動化したときとユーザーが操作したときで結果が異なる

:grey_question: Question

Excel アクティビティ パッケージを使ってExcel を自動化したときとユーザーが操作したときで結果が異なります。どうすればユーザーが操作したときと同様の結果を得られますか。

:bulb: Answer

原因

Excel アクティビティ パッケージが Excel を起動する方法が異なることにより、Excel アクティビティを使ってExcel を自動化したときとユーザーが操作したときで結果が異なっていることが考えられます。

そのため、Excel アクティビティ パッケージのモダンアクティビティを使用し、Excel の起動方法を「アプリケーション」に設定し、Excel をユーザーが手動で開いたときのように起動することをお試しください。

起動方法が「オートメーション」の場合に、次のような問題が発生し得ることが判明しています。

  • アドインに関連した問題

    • ブックの動作に必要なアドオンが読み込まれない
  • マクロに関連した問題

    • xlsmファイル内のマクロを実行したが想定通りに動作せず、関数の実行結果がNothingになる

Excel の起動方法の種類とその詳細は次のようになります。

起動方法 詳細
オートメーション Excel がオートメーション API によって起動されます。起動は高速ですが、すべてのアドインが読み込まれるわけではないため、ブックが適切に機能するためにアドインを必要とする場合には問題が発生する可能性があります。
アプリケーション Excel はユーザーが手動で開いたときのように起動し、Excel の読み込み動作があらゆる面で (アドインなど) 保証されます。

Excel の起動方法は次の2箇所で設定することができます。

  • Excel アクティビティ パッケージのモダンアクティビティ 『Excel プロセス スコープ』アクティビティ の設定 「オプション > 起動方法」

  • プロジェクト 設定 の「Excel モダン > Excel を起動 > 起動方法」

つまり、次のいずれかに当てはまる場合、Excel は 自動化 API により起動されるため、ユーザーが操作したときと結果が異なる可能性があります。

  • Excel アクティビティ パッケージのクラシックアクティビティである『Excel アプリケーション スコープ』アクティビティを使用している

  • Excel アクティビティ パッケージのモダンアクティビティである『Excel プロセス スコープ』アクティビティを使用しており、アクティビティ設定 の「オプション > 起動方法」が「オートメーション」に設定されている

  • Excel アクティビティ パッケージのモダンアクティビティを使用しており、プロジェクト 設定 の「Excel モダン > Excel を起動 > 起動方法」が「オートメーション」に設定されている

解決策

解決策は次のうちいずれかとなります。

  • Excel アクティビティ パッケージのモダンアクティビティである『Excel プロセス スコープ』アクティビティを使用し、アクティビティ設定 の「オプション > 起動方法」を「アプリケーション」に設定する

  • Excel アクティビティ パッケージのモダンアクティビティを使用し、プロジェクト 設定 の「Excel モダン > Excel を起動 > 起動方法」を「アプリケーション」に設定する