ステップカウントをするのは

Last-modified: 2022-02-21 (月) 01:17:10
Public Sub StepCount()
    Dim objVBProject As VBProject

    For Each var In Application.VBE.VBProjects
        Set objVBProject = var

        Debug.Print objVBProject.Name

        Debug.Print objVBProject.Description

        Dim objVBComponent As VBComponent
        Dim var2 As Variant

        For Each var2 In objVBProject.VBComponents
            Set objVBComponent = var2

            Dim objCodeModule As CodeModule

            Set objCodeModule = objVBComponent.CodeModule

            With objCodeModule
                Debug.Print "Name:" & objCodeModule.Name
                Debug.Print "CountOfDeclarationLines:" & .CountOfDeclarationLines
                Debug.Print "CountOfLines           :" & .CountOfLines

                Dim intIndex As Integer

                For intIndex = 1 To .CountOfLines
                    Dim strProcName As String
                    Dim enmProcKind As vbext_ProcKind

                    strProcName = .ProcOfLine(intIndex, enmProcKind)

                    If strProcName <> "" Then
                        'プロシージャ名
                        Debug.Print "ProcName:" & strProcName
                        'プロシージャの種類
                        Debug.Print "ProcKind                  :" & enmProcKind
                        'プロシージャの開始行
                        Debug.Print "   ProcStartLine          :" & .ProcStartLine(strProcName, enmProcKind)
                        'プロシージャ定義(プロシージャの本文)の開始行
                        Debug.Print "   ProcBodyLine           :" & .ProcBodyLine(strProcName, enmProcKind)
                        'プロシージャの行数
                        Dim lngProcCountLines As Long
                        lngProcCountLines = .ProcCountLines(strProcName, enmProcKind)

                        Debug.Print "   ProcCountLines         :" & lngProcCountLines

                        intIndex = intIndex + lngProcCountLines

                    End If

                Next

            End With

        Next

    Next

End Sub