
No.3ベストアンサー
- 回答日時:
> Excel VBAで参照設定をモジュールで行いたい
このような需要は、例えば WinXP, Win2000 のように異なる OS が
混在する環境であっても使用するライブラリへの参照設定を有効に
するためかと思いますが...
Excel について言えば、開発 PC 以外でそれを実行しようとしても
・参照不可となった時点で、ライブラリに依存したコードは
コンパイルエラーとなり、実行不可となる
つまり、
・参照設定を更新するコードも当然動かない
のですけども、その点については大丈夫ですか?
参照設定を更新するというアプローチではなく、#1 ご回答のように、
・CreateObject を使う(レイトバインド)
・使用が想定される PC の OS, OFFICE の一番下位バージョンに
合わせてコードを書く
・最初から特殊なライブラリは使わない
といった工夫をした方が確実ですよ。
もし上述の問題が問題とならない、またはクリアされている状況での
ご質問でしたら、パス指定の AddFromFile に加え、AddFromGUID
メソッドも考えてみて下さい。
例えば、システムフォルダなら
WinXP --> C:\Windows\System32
Win2K --> C:\WinNT\System32
といった違いがありますから。
No.2
- 回答日時:
こんにちは。
実用性はおいといて、方法論としてなら
既に 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 プロジェクトへのアクセスを信頼する」の
#チェックが必要だったかと思います。
No.1
- 回答日時:
こんばんは。
単に、参照設定をプログラムで行いたいといわれても、全体的な話では出来ないように思います。
一般のアドイン等なら、
ThisWorkbook.VBProject.References.AddFromFile パス& "\ファイル名"
で出来ると思いますが、他は、CreateObject でオブジェクトの呼び出しだと思います。Excelでは、参照設定自身が、下位バージョンとの整合性でエラーが出ない限りは、そのようなコードは使わないような気がしますが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ManagementClassが見つからない。
-
SOAP通信。恥を忍んで質問させ...
-
Windows10のVBAでDirectX 8が使...
-
VB2008→VB2010でエラーが出てま...
-
意味不明の実行時エラーで困っ...
-
C#でSystem.IO.FileFormatEx
-
VB.NETで参照設定したDLLの修正...
-
C#ソースをCSCファイルにてコン...
-
ビルドが実行できない 先へ進...
-
IT初心者です 仕事で、vb.netで...
-
EXCEL2000でVBAでWinsockをしたい
-
VBAからDLLをCALLしたいのですが
-
VB2010で作成したdllからtlbが...
-
Designer.vbは直接コードをいじ...
-
vbaでPDFファイルが印刷されない
-
印刷要求順番と印刷出力順番が...
-
exeファイルのアンインストール...
-
VBAで印刷スプール終了の判定を...
-
vba 時間の引き算 例えば 15:00...
-
クリレポのプリンタ設定について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
意味不明の実行時エラーで困っ...
-
ManagementClassが見つからない。
-
VB2010で作成したdllからtlbが...
-
VB.NETで参照設定したDLLの修正...
-
オブジェクト(dll)のレジストリ...
-
VB.Net リビルド 意味不明なメ...
-
Using System.Drawing がうまく...
-
C#ソースをCSCファイルにてコン...
-
DLLを作成してVBAから使用する...
-
VB.NETでDLLを読み込ませる時に...
-
IT初心者です 仕事で、vb.netで...
-
ビルドが実行できない 先へ進...
-
VB2008→VB2010でエラーが出てま...
-
プライマリ相互運用機能アセン...
-
VBAの参照設定について
-
msvcr120d.dllがないというエラー
-
VB6.0で作成したプロジェクトの...
-
参照設定したときのパス
-
SOAP通信。恥を忍んで質問させ...
-
VBでの実行時エラー’429’について
おすすめ情報