【ExcelVBA入門】参照設定を設定・確認・解除する方法を徹底解説!

こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。皆さんは、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の機能が拡張できるため、さまざまなツールを作ることができます。設定方法も簡単なので、ぜひ使ってみてくださいね!

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次