• ベストアンサー

コードで参照設定をする方法

VBのコード内で、オブジェクトへの「参照設定」をさせる方法を教えていただけませんでしょうか。 目的は、自分のコンピュータでは参照設定してあるオブジェクトでも、ほかのパソコンではされていると限らないため、アプリ(実際はエクセルブック)の起動時に参照設定を強制したい。参照設定がないと、そのオブジェクト変数の宣言文がコンパイルエラーとなってしまいますよね・・・。 VBAのヘルプによればこちらのメソッド(object.AddFromGuid(guid, major, minor) As Reference)を使うといいような気がするのですが、参照設定したい先(具体的には「Microsoft Scripting Runtime(scrrun.dll)」)の「GUID」がわかりません。レジストリを探さないといけないのでしょうか・・・。探し方がわかりません。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 >アプリ(実際はエクセルブック)の起動時に参照設定を強制したい。 VBAですね。Microsoft Scripting Runtime(scrrun.dll)で、何をしようとされているのか分りませんが、一過性(パスを取ったり、ファイルを探す程度)で使うなら、CreateObjectで十分な気がします。Versionの違いもありません。 ただ、全て、CreateObjectでまかなえるとは言えませんが。 Access では、コードで「参照設定」を標準的にするらしいですね。ところが、他のExcelで、以下のようなコードを書いている人も見たことがないのです。 Excelで、今、試してみましたが、これで通りましたね。ただし、全ての環境で通るとは言えません。 OSによって、ReferencePath を変えればよいわけですね。   ReferencePath がシステムのあるところ   myDll は dll の名前   ThisWorkbook.VBProject.References.AddFromFile ReferencePath & myDll

ptano99
質問者

お礼

AddFromFileというのがあったのですね!なるほど、helpの探し方がまた浅かったです。目から鱗です。勉強になりました。 また、#1さんからもご指摘のとおり「事前バインディング」にこだわらず、CreateObjectで確かに十分かもしれませんので、もう少し良く考えて見ます。ありがとうございました。

その他の回答 (1)

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

参照設定せずに事前バインディングですか? 無理かと。 # どうやってコンパイルするの? そうゆう場合は、遅延バインディングします。 詳しくは、CreateObjectのヘルプ