F0000008_ブックの参照設定の名称をすべて取得する

ブックの参照設定の名称をすべて取得する 関数リファレンス

この関数について

ExcelVBA(マクロ)の開発をしていると参照設定の名称をコピペしたいという時があります。参照設定はブック単位で保存されるので、なにか自動化ツールを作成したときに参照設定を使用しており、誰かにそのExcelファイルを渡す場合、渡されたユーザーさんは参照設定の有無を気にせずマクロを使用できます。しかし、開発においては作成した関数によっては前提となる参照設定があり、その関数をモジュールごと別のブックへ移動させても参照設定は引き継がれないため、エラーが発生します。自分⇒自分の移動なら気を付ければなんとかなりますが、グループで開発する場合、これは深刻な問題です。そこで関数の冒頭にコメントで参照設定について記述をするわけですが、参照設定の文字列(名称や場所)はコピペができません。前置きが長くなりましたが、このページで紹介する関数を実行するとブックに設定されているすべての参照設定の名称を書き出すことができます。・・・しかし、当サイトの関数リファレンスで紹介している関数群は参照設定不要で使えるというコンセプトがあるため、この関数の出番がありません。

使い方 ①そのまま実行してもエラーになります

参照設定へのアクセスはセキュリティ設定の変更が必要です。そのまま呼び出しても上記のようなエラーとなります。

使い方 ②Excelのセキュリティ設定を変更する

「開発」>「コード」>「マクロのセキュリティ」>「開発者向けのマクロ設定」>「VBAプロジェクトオブジェクトモデルへのアクセスを信頼する(V)」にチェックを入れてOKを押します。この変更はブックではなく、Excelの設定として保存されるため、他のブックを立ち上げても設定は継承されます。そのため必要がなくなったら、設定はもとに戻すことをお勧めします。※私は戻してません。

使い方 ③引数

参照設定を取得したいブックを渡します。省略すると「Thisworkbook」が渡されたものとみなします。

使い方 ④返値

参照設定の名前(Discription)が格納された1次元配列を返します。Base:1

使い方 ⑤呼び出し方例(サンプルコード)

'【テスト】GetMacroReferences:ブックの参照設定をすべて取得する
Public Sub Test_GetMacroReferencesName()
    
    Dim result_table() As String
    Dim r As Long
    
    '■開発 >> コード >> マクロのセキュリティ >>
      '「VBA プロジェクト オブジェクト モデルへのアクセスを信頼する」を有効にしておく必要がある。
    result_table = GetMacroReferences()
    
    '■イミディエイトウインドウに書き出し
    For r = LBound(result_table, 1) To UBound(result_table, 1) Step 1
        Debug.Print result_table(r)
    Next
    
End Sub

【結果】ブックに設定された参照設定を取得できました

冒頭の画像の参照設定がされたブックで実行した結果、上記の通り、参照設定の名称を取得できました。※結果を確認したら、Excelのセキュリティ設定は元に戻しましょう。

この関数は関数リファレンスからコピペ可能です!

この記事のタイトルを検索窓へ貼り付けて関数を検索してみましょう。 表示されたコードをクリックするだけでコピー完了! あとは自身で作成したモジュールに貼り付けるだけでこの関数を利用できます。サンプルコードもあり! 関数リファレンストップへ

Comment