'=================================================================================
'本マクロ実施前に以下を行うこと。
' 「開発」タブ ⇒ マクロのセキュリティ ⇒ マクロの設定 ⇒
' 「VBA プロジェクト オブジェクト モデルへのアクセスを信頼する」にチェックを入れる
'=================================================================================
Public Sub CreateProcedureList()
Dim lModuleCnt As Long
Dim lLineCnt As Long
Dim lRowIdx As Long
Dim sModuleName As String
Dim sProcedureName As String
If MsgBox( _
"コンポーネントとプロシージャの一覧を作成してよければOKボタンをクリックしてください。", _
vbOKCancel + vbDefaultButton2 _
) = vbCancel Then
Exit Sub
End If
'先頭にワークシートを挿入
ThisWorkbook.Worksheets.Add Before:=Worksheets(1)
lRowIdx = 1
'プロジェクト内のモジュールの数だけループを回す
For lModuleCnt = 1 To ThisWorkbook.VBProject.VBComponents.Count
With ThisWorkbook.VBProject.VBComponents(lModuleCnt)
sModuleName = .Name
'モジュールに含まれるコードの行数文だけループを回す
For lLineCnt = 1 To .CodeModule.CountOfLines
If sProcedureName <> .CodeModule.ProcOfLine(lLineCnt, 0) And _
.CodeModule.ProcOfLine(lLineCnt, 0) <> "" Then
sProcedureName = .CodeModule.ProcOfLine(lLineCnt, 0)
ThisWorkbook.Worksheets(1).Cells(lRowIdx, 1) = sModuleName 'コンポーネント名の書き出し
ThisWorkbook.Worksheets(1).Cells(lRowIdx, 2) = sProcedureName 'プロシージャ名の書き出し
lRowIdx = lRowIdx + 1 'プロシージャ名を書きだす行番号を設定
End If
Next lLineCnt
End With
Next lModuleCnt
MsgBox ThisWorkbook.Worksheets(1).Name & "にコンポーネントとプロシージャの一覧を作成しました。"
End Sub
最終更新:2015年03月04日 21:53