重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

VBのコード内で、オブジェクトへの「参照設定」をさせる方法を教えていただけませんでしょうか。
目的は、自分のコンピュータでは参照設定してあるオブジェクトでも、ほかのパソコンではされていると限らないため、アプリ(実際はエクセルブック)の起動時に参照設定を強制したい。参照設定がないと、そのオブジェクト変数の宣言文がコンパイルエラーとなってしまいますよね・・・。

VBAのヘルプによればこちらのメソッド(object.AddFromGuid(guid, major, minor) As Reference)を使うといいような気がするのですが、参照設定したい先(具体的には「Microsoft Scripting Runtime(scrrun.dll)」)の「GUID」がわかりません。レジストリを探さないといけないのでしょうか・・・。探し方がわかりません。

A 回答 (2件)

こんにちは。



>アプリ(実際はエクセルブック)の起動時に参照設定を強制したい。

VBAですね。Microsoft Scripting Runtime(scrrun.dll)で、何をしようとされているのか分りませんが、一過性(パスを取ったり、ファイルを探す程度)で使うなら、CreateObjectで十分な気がします。Versionの違いもありません。

ただ、全て、CreateObjectでまかなえるとは言えませんが。

Access では、コードで「参照設定」を標準的にするらしいですね。ところが、他のExcelで、以下のようなコードを書いている人も見たことがないのです。

Excelで、今、試してみましたが、これで通りましたね。ただし、全ての環境で通るとは言えません。

OSによって、ReferencePath を変えればよいわけですね。

  ReferencePath がシステムのあるところ
  myDll は dll の名前

  ThisWorkbook.VBProject.References.AddFromFile ReferencePath & myDll
    • good
    • 0
この回答へのお礼

AddFromFileというのがあったのですね!なるほど、helpの探し方がまた浅かったです。目から鱗です。勉強になりました。

また、#1さんからもご指摘のとおり「事前バインディング」にこだわらず、CreateObjectで確かに十分かもしれませんので、もう少し良く考えて見ます。ありがとうございました。

お礼日時:2005/08/21 19:06

参照設定せずに事前バインディングですか?


無理かと。
# どうやってコンパイルするの?

そうゆう場合は、遅延バインディングします。

詳しくは、CreateObjectのヘルプ
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!