アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excel VBAで参照設定をモジュールで行いたいのですが、
何かいい方法はありますか。
宜しくお願い致します。

A 回答 (3件)

> Excel VBAで参照設定をモジュールで行いたい



このような需要は、例えば WinXP, Win2000 のように異なる OS が
混在する環境であっても使用するライブラリへの参照設定を有効に
するためかと思いますが...

Excel について言えば、開発 PC 以外でそれを実行しようとしても

 ・参照不可となった時点で、ライブラリに依存したコードは
  コンパイルエラーとなり、実行不可となる

つまり、

 ・参照設定を更新するコードも当然動かない

のですけども、その点については大丈夫ですか?

参照設定を更新するというアプローチではなく、#1 ご回答のように、

 ・CreateObject を使う(レイトバインド)
 ・使用が想定される PC の OS, OFFICE の一番下位バージョンに
  合わせてコードを書く
 ・最初から特殊なライブラリは使わない

といった工夫をした方が確実ですよ。

もし上述の問題が問題とならない、またはクリアされている状況での
ご質問でしたら、パス指定の AddFromFile に加え、AddFromGUID
メソッドも考えてみて下さい。

例えば、システムフォルダなら

 WinXP --> C:\Windows\System32
 Win2K --> C:\WinNT\System32

といった違いがありますから。
    • good
    • 0

こんにちは。


実用性はおいといて、方法論としてなら
既に Wendy02 さんが書かれてますが、 AddFromFile メソッド でできますね。

Sub Lib_Add()
  Const fn As String = "scrrun.dll"  '追加するライブラリを指定
  Dim ref As Object
  Dim msg As String

  With ActiveWorkbook.VBProject
    For Each ref In .References
      If ref.FullPath Like "*" & fn Then Exit For
    Next ref
    If ref Is Nothing Then
      .References.AddFromFile fn
      msg = "参照追加."
    Else
      msg = "参照済み."
      Set ref = Nothing
    End If
  End With
  MsgBox msg
End Sub

On Error Resume Next
ActiveWorkbook.VBProject.References.AddFromFile "scrrun.dll"
でもいいかもしれませんが。

Sub Lib_Get() '参考:参照済みLib列挙
  Dim ref As Object
  
  For Each ref In ActiveWorkbook.VBProject.References
    Debug.Print ref.Name, ref.Description, ref.FullPath
  Next ref
End Sub

#確か、XP/2003では[ツール]-[マクロ]-[セキュリティ]の
#「Visual Basic プロジェクトへのアクセスを信頼する」の
#チェックが必要だったかと思います。
    • good
    • 1

こんばんは。



単に、参照設定をプログラムで行いたいといわれても、全体的な話では出来ないように思います。

一般のアドイン等なら、
ThisWorkbook.VBProject.References.AddFromFile パス& "\ファイル名"

で出来ると思いますが、他は、CreateObject でオブジェクトの呼び出しだと思います。Excelでは、参照設定自身が、下位バージョンとの整合性でエラーが出ない限りは、そのようなコードは使わないような気がしますが。
    • good
    • 0

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