VBA(Visual Basic for Applications)で、マクロ・ユーザー定義関数・イベントプロシージャなどをたくさん作り始めると、どのモジュールにどんなプロシージャが含まれているのか管理する必要が出てきます。
そんなとき、簡単にモジュールとプロシージャの一覧を作成するマクロが欲しくなってきます。
そのためのマクロをご紹介しておきます。
Sub コンポーネントとプロシージャの一覧を作成する()
Dim lp_comp As Long
Dim lp_line As Long
Dim iR As Long
Dim prcName As String
If MsgBox( _
"コンポーネントとプロシージャの一覧を作成してよければOKボタンをクリックしてください。", _
vbOKCancel + vbDefaultButton2) = vbCancel Then Exit Sub
'先頭にワークシートを挿入
Worksheets.Add Before:=Worksheets(1)
With ActiveWorkbook
'プロジェクト内のコンポーネントの数だけループを回す
For lp_comp = 1 To .VBProject.VBComponents.Count
'コンポーネント名を書きだす行番号を設定
iR = iR + 1
'コンポーネント名の書き出し
Cells(iR, 1) = .VBProject.VBComponents(lp_comp).Name
With .VBProject.VBComponents(lp_comp).CodeModule
prcName = ""
'モジュールに含まれるコードの行数文だけループを回す
For lp_line = 1 To .CountOfLines
If prcName <> .ProcOfLine(lp_line, 0) Then
'プロシージャ名の取得
prcName = .ProcOfLine(lp_line, 0)
'プロシージャ名を書きだす行番号を設定
iR = iR + 1
'プロシージャ名の書き出し
Cells(iR, 2) = prcName
End If
Next lp_line
End With
Next lp_comp
End With
MsgBox Worksheets(1).Name & "にコンポーネントとプロシージャの一覧を作成しました。"
上記のマクロを実行するには、まず、セキュリティの設定変更が必要です。
Excel 2010・2007の場合は、[開発]タブ-[コード]グループ-[マクロのセキュリティ]ボタンなどから表示できる、[セキュリティセンター]ダイアログ-[マクロの設定]タブの[開発者向けのマクロ設定]欄-[VBAプロジェクトオブジェクトモデルへのアクセスを信頼する]チェックボックスをOnにしてください。
Excel 2003の場合は、メニュー[ツール]-[マクロ]-[セキュリティ]から表示できる[セキュリティ]ダイアログ-[信頼できる発行元]タブ-[VBAプロジェクトオブジェクトモデルへのアクセスを信頼する]チェックボックスをOnにしてください。
これらのセキュリティの設定変更を行ってから、上記のマクロを実行すると、新しいシートが先頭に挿入されてA列にコンポーネント名、B列にプロシージャ名の一覧が作成されます。
Home » エクセルマクロ・Excel VBAの使い方 » マクロのサンプル » プロシージャ一覧を作成するマクロ