アーリー バインドされた参照は "バインド" されており (しゃれを許してください)、異なる Excel バージョンのユーザーにアプリケーションを配布する際に問題が発生します。
サポートする予定の最も古いバージョンの Excel の遅延バインディングとコーディングを使用することが解決策です。たとえば、Excel 2000 をサポートしている場合、アプリケーションは Excel 2000 でサポートされているメソッドのみを使用します。
ただし、コードが遅延バインドされている場合は、あいまいなメソッド呼び出しを使用してローカル バージョンを検出し、実行するコードを決定できます。
元:
Dim excelVersion As Long
Dim xl As Object
' get a reference to Excel.Application maybe from AddinInstance_OnConnection()?
excelVersion = Val(xl.Version)
Select Case excelVersion
Case 11 ' Excel 2003
' Excel 2003-only methods here
' ex: xl.FileSearch
Case 12 ' Excel 2007
' Excel 2007-only methods here
Case 14 ' Excel 2010
' Excel 2010-only methods here
' ex: something with Slicers
End Select
コードはレイト バインド (つまり、オブジェクトから派生) であるため、Excel 2010 でのみ有効なメソッドを指定でき、コードは引き続きコンパイルされます。コードが Excel 2003 に早期にバインドされていた場合、コンパイルされません。実行時に、使用するメソッドを決定するためにバージョンを決定します。
Excel 2010 固有の機能を使用している場合は、アプリケーションのさまざまなバージョンをコンパイルすることも検討してください。それが可能かどうかはあなただけが知っているでしょう。
また、この回答を書いた後にこれを考えましたが、アプリで Excel 2010 を参照できませんか。以前のバージョンの Excel を搭載したコンピューターにインストールされている場合、参照は Excel のバージョンに自動的に調整されませんか?インストールされていますか?