- ベストアンサー
コードで参照設定をする方法
VBのコード内で、オブジェクトへの「参照設定」をさせる方法を教えていただけませんでしょうか。 目的は、自分のコンピュータでは参照設定してあるオブジェクトでも、ほかのパソコンではされていると限らないため、アプリ(実際はエクセルブック)の起動時に参照設定を強制したい。参照設定がないと、そのオブジェクト変数の宣言文がコンパイルエラーとなってしまいますよね・・・。 VBAのヘルプによればこちらのメソッド(object.AddFromGuid(guid, major, minor) As Reference)を使うといいような気がするのですが、参照設定したい先(具体的には「Microsoft Scripting Runtime(scrrun.dll)」)の「GUID」がわかりません。レジストリを探さないといけないのでしょうか・・・。探し方がわかりません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 >アプリ(実際はエクセルブック)の起動時に参照設定を強制したい。 VBAですね。Microsoft Scripting Runtime(scrrun.dll)で、何をしようとされているのか分りませんが、一過性(パスを取ったり、ファイルを探す程度)で使うなら、CreateObjectで十分な気がします。Versionの違いもありません。 ただ、全て、CreateObjectでまかなえるとは言えませんが。 Access では、コードで「参照設定」を標準的にするらしいですね。ところが、他のExcelで、以下のようなコードを書いている人も見たことがないのです。 Excelで、今、試してみましたが、これで通りましたね。ただし、全ての環境で通るとは言えません。 OSによって、ReferencePath を変えればよいわけですね。 ReferencePath がシステムのあるところ myDll は dll の名前 ThisWorkbook.VBProject.References.AddFromFile ReferencePath & myDll
その他の回答 (1)
- todo36
- ベストアンサー率58% (728/1234)
参照設定せずに事前バインディングですか? 無理かと。 # どうやってコンパイルするの? そうゆう場合は、遅延バインディングします。 詳しくは、CreateObjectのヘルプ
お礼
AddFromFileというのがあったのですね!なるほど、helpの探し方がまた浅かったです。目から鱗です。勉強になりました。 また、#1さんからもご指摘のとおり「事前バインディング」にこだわらず、CreateObjectで確かに十分かもしれませんので、もう少し良く考えて見ます。ありがとうございました。