■ 最新の投稿

VBAProject技:Excelブック内のモジュール一覧を作成する

VBAが増えてくると、「このブックには何個モジュールがあるんだろう?」と思うことはありませんか?

Excelブックに存在するモジュールをVBAにて調べる方法を紹介します。

【前提】

以下のようにVBAProjectにモジュールを含むExcelブックを想定します。

① Visual Baisc プロジェクトへのアクセスを許可します。

Excel VBAで『Visual Basicプロジェクトへのアクセス』を有効にする方法

② 「Microsoft Visual Basic for Application Extensibility」を参照設定します。

③ 次のプログラムコードを記載します。

Public Sub Sample_MakeModuleTable_01()

    ' ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
    ' 参照設定:
    ' 「Microsoft Visual Basic for Application Extensibility」
    ' ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

    ' このブックのVBProjectをオブジェクト変数に格納する。
    Dim Obj As VBIDE.VBProject
    Set Obj = ThisWorkbook.VBProject

    ' VBProjectに存在するコンポーネント数を変数に格納する。
    Dim CompCnt As Long
    CompCnt = Obj.VBComponents.Count

    ' VBProjectに存在するコンポーネントを一つずつ参照する。
    Dim lp As Long
    For lp = 1 To CompCnt
        With Range("A1")
            .Offset(lp - 1, 0).Value = Obj.VBComponents(lp).Name
            .Offset(lp - 1, 1).Value = Obj.VBComponents(lp).Type
        End With
    Next

    ' オブジェクトを破棄する。
    Set Obj = Nothing

End Sub

このVBAを実行すると、以下の結果が得られます。

コンポーネントタイプについては以下の対応表を参考にしてください。

タイプ意味
1標準モジュール
2クラスモジュール
3Microsoft Form
11ActiveXデザイン
100Documentモジュール

一覧化するだけで、VBAの見通しは大きく変わります。


Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です