Excel VBA | 超初心者(Excel操作+マクロ体験):VBA基礎環境 – 参照設定

Excel VBA VBA
スポンサーリンク

参照設定ってそもそも何?

まず一番やさしく言うと、
参照設定=「VBAに、この道具(ライブラリ)を使っていいよ、と事前に教える設定」です。

Excel VBAは、最初から「Excelの基本機能」は使える状態になっています。
でも、たとえば

  • ファイルやフォルダを便利に扱いたい(Scripting.Dictionary など)
  • Outlook を操作したい
  • Access や他のOfficeアプリと連携したい

といった「ちょっと高度な道具」を使いたいときは、
VBAに「このライブラリを使います」と宣言してあげる必要があります。
その宣言が「参照設定」です。

参照設定をすると、そのライブラリのオブジェクトや定数、メソッドが
・コード補完(IntelliSense)に出てくる
・型として宣言できる
ようになり、書きやすく・間違えにくくなります。


参照設定の画面を開く手順

参照設定ダイアログの出し方

VBE(Alt+F11)を開いた状態で、次の順番で操作します。

上部メニューの「ツール」をクリックする。
その中の「参照設定」をクリックする。

すると、「参照設定」というダイアログが開きます。
上の方にチェックボックス付きの一覧がずらっと並んでいて、
下の方に「参照不可」などの表示が出ることもある、あの画面です。

ここでチェックを付ける=「このライブラリを使います」と宣言する、ということになります。


具体例1:Scripting.Dictionary を使うための参照設定

参照設定なしで書こうとするとどうなるか

たとえば、よく出てくる「Dictionary」を使いたいとします。
参照設定をしないまま、いきなりこう書くとします。

Sub TestDic()

    Dim dic As Dictionary
    Set dic = New Dictionary

End Sub
VB

この状態で保存しようとすると、

「ユーザー定義型が定義されていません」

というコンパイルエラーが出ます。
VBAが「Dictionary っていう型、知らないんだけど…」と言っている状態です。

ここで必要になるのが「参照設定」です。

参照設定を追加してから書く

同じコードを動かすために、次のようにします。

  1. VBE で「ツール → 参照設定」を開く
  2. 一覧の中から「Microsoft Scripting Runtime」にチェックを入れる
  3. OK を押して閉じる

これで、VBAは「Scripting Runtime というライブラリを使っていい」と認識します。
その状態で、次のコードを書きます。

Option Explicit

Sub TestDic()

    Dim dic As Dictionary          ' 型として認識される
    Set dic = New Dictionary       ' New もOK

    dic.Add "A", 100
    dic.Add "B", 200

    MsgBox dic("A")

End Sub
VB

今度はエラーにならず、ちゃんと動きます。
さらに、Dim dic As Dictionary と書くときに、
Dictionary がコード補完に出てくるようになります。

ここで感じてほしいのは、

  • 参照設定をすると「型として宣言できる」
  • コード補完が効くので、スペルミスもしにくい
  • エラーも「コンパイル時」に出てくれるので安全

というメリットです。


参照設定をしない書き方(遅延バインディング)との違い

参照設定なしでも動かす方法

実は、参照設定をしなくても Dictionary を使う方法があります。
それが「遅延バインディング」と呼ばれる書き方です。

Option Explicit

Sub TestDicLate()

    Dim dic As Object
    Set dic = CreateObject("Scripting.Dictionary")

    dic.Add "A", 100
    dic.Add "B", 200

    MsgBox dic("A")

End Sub
VB

この書き方なら、参照設定は不要です。
ただし、

  • dic の型が Object なので、コード補完が効きにくい
  • メソッド名やプロパティ名をスペルミスしても、実行するまで気づけない

というデメリットがあります。

超初心者におすすめなのは「まずは参照設定して事前バインディング」

用語はさておき、超初心者のうちは

  • 参照設定をして
  • きちんと型を指定して(As Dictionary など)
  • コード補完に頼りながら書く

というスタイルの方が、圧倒的に学びやすいです。

慣れてきたら、「参照設定なしで書く理由」(配布先の環境差など)も見えてきますが、
最初は「参照設定して、型をちゃんと書く」ほうが、エラーの原因が見えやすくて安心です。


参照設定が原因で起こりがちなトラブル

「参照不可(MISSING)」状態

他の人からもらったブックを開いたとき、
「ツール → 参照設定」を見ると、一覧の一番上に

「参照不可:〇〇〇〇」

のような項目が出ていることがあります。

これは、「そのブックが参照しているライブラリが、そのPCには存在しない(またはパスが違う)」状態です。
この状態だと、関係なさそうなコードまでコンパイルエラーになったりします。

超初心者向けの対処としては、

  • そのライブラリが本当に必要か分からない場合 → いったんチェックを外して OK を押す
  • 明らかに必要(Outlook 操作など)な場合 → そのPCに対応するバージョンのライブラリを探してチェックし直す

という感じになります。

「参照不可」があるときは、まず参照設定を疑う、という癖をつけておくと、
「なんで急にエラーだらけ?」というときに原因にたどり着きやすくなります。

「ユーザー定義型が定義されていません」などのエラー

さっきの Dictionary の例のように、

  • As Dictionary
  • As Outlook.Application
  • As ADODB.Connection

などと書いたときに、「ユーザー定義型が定義されていません」と怒られたら、
「その型を提供しているライブラリの参照設定が足りていない」可能性が高いです。

エラーが出た型名を見て、
「これはどのライブラリの型だろう?」
と逆引きして、参照設定を追加する、という流れになります。


超初心者向け「参照設定」の実践的な考え方

まずは「標準のままでいい」からスタートしてOK

普通の Excel 操作(セルの値を読む・書く、シートを操作する程度)なら、
参照設定をいじらなくても十分にマクロは書けます。

なので、最初のうちは

  • 参照設定は「触らなくても動く」
  • でも「外の世界(Outlook、Access、ファイルシステムなど)と連携したくなったら出番」

くらいの認識で大丈夫です。

「型をちゃんと書きたい」と思ったら、参照設定を意識する

少し慣れてきて、

  • Dictionary を使いたい
  • Outlook を操作したい
  • ADO でデータベースに接続したい

といった場面が出てきたら、そのとき初めて

「この機能を使うには、どの参照設定が必要なんだろう?」

と調べる、という順番で十分です。

そのときに、

  • ツール → 参照設定 を開いて
  • 該当するライブラリにチェックを入れて
  • 型をきちんと書いて、コード補完に頼る

という流れを一度経験しておくと、
「参照設定って、そういう“道具箱の許可”なんだな」という感覚がしっかり身につきます。


まとめ

参照設定は、
「VBAに、このライブラリ(道具)を使っていいよ、と事前に教える設定」です。

ツール → 参照設定 から、使いたいライブラリにチェックを入れることで、
そのライブラリの型やメソッドを、型宣言付きで安全に使えるようになります。

超初心者のうちは、

  • まずは参照設定なしで、Excel標準の機能だけでマクロに慣れる
  • そのうち「Dictionary 使いたい」「Outlook 触りたい」となったら、参照設定を一つずつ試してみる

というステップで進むのが、いちばんストレスが少ないです。

タイトルとURLをコピーしました