【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の機能が拡張できるため、さまざまなツールを作ることができます。設定方法も簡単なので、ぜひ使ってみてくださいね!

この記事を書いた人

北海道出身の30歳で、フリーランスエンジニア兼テックライターとして活動中。新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。

Webアプリ、業務アプリ開発において、要件定義 ~ 運用保守まで様々な経験あり。また3歳の娘がいる1児のパパで、日々娘との時間を確保するために仕事を頑張っています!
侍エンジニアでは、【誰でもわかるレベルのわかりやすさ】を意識して、記事を執筆中。

目次