
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでArrayListを使う為の「mscorlib.tlb」の参照設定について 3 2022/03/23 19:45
- Excel(エクセル) エクセル バーコード作成で他のシートを参照するには? 2 2023/05/03 16:57
- その他(プログラミング・Web制作) Pythonでexcelのvbaを作成、実行する方法について Pythonで表の自動集計プログラムを 3 2022/07/09 09:58
- Visual Basic(VBA) VBA アドインについて お詳しい方 ご教授をお願いします。 相談事項 現在以下の対応を実施した所、 1 2022/11/02 16:53
- Excel(エクセル) 「Excelのオプション」の「ユーザーインターフェイスのオプション」の設定値をVBAで取得したい 1 2022/07/31 23:49
- Visual Basic(VBA) Excel VBAで教えてください 4 2022/05/11 22:20
- Visual Basic(VBA) 基礎的な質問なのですが、Excel VBAで、B列、C列、それぞれの値を照合し、D列へ照合結果(一致 3 2022/04/02 17:14
- Excel(エクセル) Excel ハイパーリンク設定について 教えてください 例なんですが、 VBAにてファイル1の列Gに 2 2022/11/04 17:52
- Excel(エクセル) Excel 表の作成について 3 2022/06/16 12:15
- Visual Basic(VBA) Excel VBA 書式変更で困ってます。 オートフィルターの日付フィルターを用いて データの絞り込 2 2022/07/26 22:16
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
意味不明の実行時エラーで困っ...
-
IT初心者です 仕事で、vb.netで...
-
ManagementClassが見つからない。
-
VB.NETで参照設定したDLLの修正...
-
VB2010で作成したdllからtlbが...
-
msvcr120d.dllがないというエラー
-
VB.Net リビルド 意味不明なメ...
-
OWCを使用しブラウザにグラフを...
-
Using System.Drawing がうまく...
-
C#ソースをCSCファイルにてコン...
-
オブジェクト(dll)のレジストリ...
-
ビルドが実行できない 先へ進...
-
VB.NETでDLLを読み込ませる時に...
-
DLLを作成してVBAから使用する...
-
SOAP通信。恥を忍んで質問させ...
-
印刷ダイアログを表示させたくない
-
vba 時間の引き算 例えば 15:00...
-
VBAでOutlookを終了させたい Ex...
-
Designer.vbは直接コードをいじ...
-
VBAでArrayListを使う為の「msc...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
意味不明の実行時エラーで困っ...
-
ManagementClassが見つからない。
-
VB.NETでDLLを読み込ませる時に...
-
VB.NETで参照設定したDLLの修正...
-
VB.Net リビルド 意味不明なメ...
-
VB2010で作成したdllからtlbが...
-
C#ソースをCSCファイルにてコン...
-
オブジェクト(dll)のレジストリ...
-
IT初心者です 仕事で、vb.netで...
-
Using System.Drawing がうまく...
-
VB2008→VB2010でエラーが出てま...
-
VBAの参照設定について
-
DLLを作成してVBAから使用する...
-
ビルドが実行できない 先へ進...
-
MS Visual Studio 6.0のEnterpr...
-
Windows10のVBAでDirectX 8が使...
-
VB6.0で作成したプロジェクトの...
-
Excel-VBAでDSOFile.dll使える?
-
ActiveMovie Control Objectを...
-
EXCEL2000でVBAでWinsockをしたい
おすすめ情報