マークは、Excel?2002と2003の2つのバージョンを使用する作業環境にいます。Office11のVBライブラリをインストールするExcel 2003でマクロを使用してワークブックを開いた後、誰かが同じものを開こうとすると、問題が発生します。 Excel 2002のワークブック。正しいVBAライブラリ参照が見つからないため、マクロを実行しようとするとエラーが発生します。マークは、VBエディターに移動して不足しているVBAライブラリへの参照をクリアすることでこれを手動で修正できることを知っていますが、ブックにExcelバージョンを自動的にチェックさせ、それに応じてVBAライブラリ参照を更新する方法があるかどうか疑問に思います。

これに対処する1つの方法は、以前のバージョンのExcelを使用してブックを作成して保存することです。それ以降のバージョンのExcelで開くと、VBAライブラリへの参照が自動的に更新されます。

Excelは更新を新しいバージョンに適用しますが、以前のバージョンには適用しません。

ただし、これは、ブックが以前のバージョンのExcelで作成された場合でも、一度開いてから新しいバージョンのExcelに保存すると、以前のバージョンのユーザーはそれを開くのに問題が発生することを意味します。

いくつかの情報源によると、解決策は「遅延バインディング」として知られているものに頼ることです。これは単に、マクロが保存されたときではなく、実行時にのみ特定の関数を検索するようにマクロが作成されていることを意味します。これは、次のマイクロソフトサポート技術情報の記事で少し参照されています。

http://support.microsoft.com/?kbid=244167

VBAエディターを開き、以前に確立された参照を削除することで、遅延バインディング手法を試すことができます。次に、マクロの先頭近くに次のようなコードを追加します。

If Application.Version = "10.0" Then    'Excel 2002     Dim oExcel As Object    'Apply late binding     Set oExcel = CreateObject("Excel.Application")

End If If Application.Version = "11.0" Then    'Excel 2003     '     ' Add whatever references you want for Excel 2003     ' End If

マクロの最後で、定義済みのオブジェクト(oExcelなど)が[なし]に設定されていることを確認してください。ここに示されているものよりも堅牢なコードの良い例は、次の記事にあります。

http://www.vbaexpress.com/kb/getarticle.php?kb_id=267 http://www.vbaexpress.com/kb/getarticle.php?kb_id=272

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(3340)は、Microsoft Excel 97、2000、2002、および2003に適用されます。