【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の詳しい使い方については以下で解説しているので、気になる方は見てみてくださいね!

【VBA入門】For Eachで配列やコレクション、Selectionを操作
更新日 : 2019年4月23日

参照設定を解除する方法

次に、参照設定を解除する方法について解説します。参照設定を解除する方法は次のとおりです。

使い方:

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

LINEで送る
Pocket

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。
Webアプリ、業務アプリ開発において、要件定義、設計、インフラ、製造、テスト、運用保守など、様々な経験あり。
また、侍ブログ編集部として、これまでに200記事以上の記事を執筆。
現在はフリーランスエンジニア兼テックライターとして活動中。