web-dev-qa-db-ja.com

Office 2016-> 2013「コンパイルエラー、プロジェクトまたはライブラリが見つかりません」

ほとんどのユーザーが行っていないOffice2016にアップグレードしたところ、ユーザーがスクリプトを実行しようとすると新しいエラーが発生します。

「コンパイルエラー、プロジェクトまたはライブラリが見つかりません」

参照を調べたところ、「Microsoft Word 16.0オブジェクトライブラリ」を参照しようとしているようで、Office 2013を実行しているマシンにありません。参照を2013バージョンに変更するオプションが表示されず、表示されません。全員をアップグレードせずにユーザーに2016リファレンスへのアクセスを許可する方法を知っている(現時点ではオプションではありません)。

このエラーは、コードの最初の実行可能行で発生します

Set app = Range("A2")
6
Travis Kopp

このようにExcel.Range( "A2")を使用するには、Excel 15.0オブジェクトライブラリを含めるか、以下に示すように遅延バインディングを使用する必要があります。

  Dim excelApp As object, r as object
  Set excelApp = CreateObject("Excel.Application")
  Set r = excelApp.Range("A2")
5
Clint Street

VBAプロジェクトがOfficeアプリを参照するOfficeドキュメントは、それ以降のOfficeバージョンでも機能します。それ以降のバージョンでそれらを開くと、それらはその新しいバージョンを参照しているように見えます。

ただし、そのようなファイルを新しいバージョンのOfficeで保存してから、元のOfficeバージョンで開くと、ファイルが属するOfficeアプリ以外のOfficeアプリへの参照がMISSING:になります。
つまり、ExcelとWordを参照するExcelファイルがある場合、Office 2016で再保存してから、Office 2013で開くと、Excelへの参照は問題ありませんが、Wordへの参照はMISSING:

これを回避するには、サポートしている最も古いOfficeバージョンでファイルを常に保存するか、他のOfficeアプリへの参照を完全に削除し、 遅延バインディング を使用してそれらを呼び出します。

4
GSerg