こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。皆さんは、VBAで参照設定を追加したことがありますか?参照設定とは、拡張した機能を使うことができる仕組みです。
VBAを書くときに、参照設定を追加して処理を作るケースはよくあります。そこで今回は、
- 参照設定とは?
- 参照設定の追加方法
- VBAで参照設定を操作する方法
- VBAで参照設定を操作するときの注意点
というように、基礎的なことから応用的な方法まで、徹底的に解説します!
参照設定とは
まず、参照設定について簡単に解説します。参照設定とは、VBAで拡張機能を使うための仕組みです。
- ファイルシステムを使うために参照設定を追加
- Outlookを操作するために参照設定を追加
- Internet Explorerを操作するために参照設定を追加
など、VBAの機能を拡張して処理を作りたいときに使います。
参照設定を手動で追加する方法
次に、手動で参照設定を追加する方法について解説します。参照設定を追加する方法は、次のとおりです。
1. 開発タブ → Visual Basicを選択してVBEを開く
2. ツール → 参照設定をクリック
3. 追加したい参照設定をチェックして、OKボタンをクリック
このように、簡単に参照設定を追加することができます。
参照設定を自動(VBA)で追加する方法
次に、参照設定をVBAで操作する方法について解説します。
事前準備:マクロのセキュリティを変更する
まず、参照設定をVBAで操作するためにマクロのセキュリティを設定します。設定する方法は次のとおりです。
1. 開発タブ → マクロのセキュリティをクリック
2. 「VBA プロジェクト オブジェクト モデルへのアクセスを信頼する」にチェックを入れて、OKボタンクリック
これで設定ができました。この設定をしないと、VBAで参照設定のコードを動かせないので、最初に必ず設定してください。
参照設定を追加する方法
次に、参照設定を追加する方法について解説します。参照設定を追加する方法は、次のとおりです。
使い方:
ActiveWorkbook.VBProject.References.AddFromFile 参照設定のフルパス
サンプルコードを用意しました。
サンプルコード:
Sub Test() Const setRefFile As String = "C:Program Files (x86)Microsoft OfficeRootOffice15MSOUTL.OLB" ActiveWorkbook.VBProject.References.AddFromFile setRefFile End Sub
実行後の参照設定:
この例では、Outlookの参照設定「Microsoft Outlook 16.0 Object Library」を追加しています。このように、簡単に参照設定を追加することができます。
※ちなみに、Internet Explorerを操作する場合は「Microsoft HTML Object Library」「Microsoft Internet Controls」、ファイルシステムを使う場合は「Microsoft Scripting Runtime」を追加することで、機能を使えるようになります。
参照設定を確認する方法
次に、参照設定を確認する方法について解説します。参照設定を確認する方法は次のとおりです。
使い方:
.Name '名称 .Description '参照設定名 .FullPath 'フルパス
サンプルコードを用意しました。
サンプルコード:
Sub Test2() Dim refObj As Object For Each refObj In ThisWorkbook.VBProject.References With refObj Debug.Print _ "名称:" & .Name & vbCrLf & _ "参照設定名:" & .Description & vbCrLf & _ "フルパス:" & .FullPath & vbCrLf & _ "------------------------" End With Next refObj End Sub
実行結果:
名称:VBA 参照設定名:Visual Basic For Applications フルパス:C:Program Files (x86)Common FilesMicrosoft SharedVBAVBA7.1VBE7.DLL ------------------------ 名称:Excel 参照設定名:Microsoft Excel 16.0 Object Library フルパス:C:Program Files (x86)Microsoft OfficeRootOffice16EXCEL.EXE ------------------------ 名称:stdole 参照設定名:OLE Automation フルパス:C:WindowsSysWOW64stdole2.tlb ------------------------ 名称:Outlook 参照設定名:Microsoft Outlook 16.0 Object Library フルパス:C:Program Files (x86)Microsoft OfficeRootOffice16MSOUTL.OLB ------------------------
このサンプルでは、参照設定されている数分ForEachの繰り返し処理を行い、それぞれName・Description・FullPathで名前・参照設定名・フルパス[を出力しています。このように、簡単に参照設定を確認することができます。
ちなみに、ForEachの詳しい使い方については以下で解説しているので、気になる方は見てみてくださいね!
参照設定を解除する方法
次に、参照設定を解除する方法について解説します。参照設定を解除する方法は次のとおりです。
使い方:
.Remove 参照設定フルパス
サンプルコードを用意しました。
実行前の参照設定:
サンプルコード:
Sub Test3() Dim refObj As Variant With ThisWorkbook.VBProject For Each refObj In ThisWorkbook.VBProject.References If refObj.Description = "Microsoft Outlook 16.0 Object Library" Then .References.Remove refObj End If Next refObj End With End Sub
実行後の参照設定:
この例では、Outlookの参照設定「Microsoft Outlook 16.0 Object Library」を解除しています。このように、簡単に参照設定を解除することができます。
参照設定を操作するときの注意点
今まで参照設定を操作する方法について解説してきましたが、1つだけ注意点があります。「過去のバージョン」で参照設定をしていた場合、「参照不可」で参照設定に表示されてしまう点です。
参照不可で表示されているだけで、参照自体されていないため次のような操作ができません。
- 参照設定の確認
- 参照設定の解除
そのため、最新のバージョンに沿った参照設定を追加する必要があります。
「前のバージョンのExcelでは動いていたのに、急にVBAが動かなくなってしまった・・・」というときは、Excelのバージョンにあった参照設定が設定されていない可能性があるので、参照設定を確認してみてくださいね。
まとめ
今回は、VBAで参照設定を操作する方法について徹底的に解説しました。参照設定を使うとVBAの機能が拡張できるため、さまざまなツールを作ることができます。設定方法も簡単なので、ぜひ使ってみてくださいね!