如何用vba遍历所有的工程组件VBComponent?

如下图所示:

在vba工程中有窗体(UserForm1)、类模块(类1)、标准模块(模块1、模块2),文档模块(Sheet1、ThisWorkbook)等组件。

以下示例代码可以遍历所有组件,并输出所有组件的名称、类型以及声明代码的总行数和代码的总行数:

Const vbext_ct_ActiveXDesigner = 11
Const vbext_ct_ClassModule = 2
Const vbext_ct_Document = 100
Const vbext_ct_StdModule = 1
Const vbext_ct_MSForm = 3
Sub QQ1722187970()
   Dim oCM As CodeModule
   Dim oVC As VBComponent
   For Each oVC In Excel.ThisWorkbook.VBProject.VBComponents
     With oVC
        '输出组件的名称
         Debug.Print .Name,
         Select Case .Type
            Case 11
                Debug.Print "vbext_ct_ActiveXDesigner"
            Case 2
                Debug.Print "vbext_ct_ClassModule"
            Case 100
                Debug.Print "vbext_ct_Document"
            Case 1
                Debug.Print "vbext_ct_StdModule"
            Case 3
                Debug.Print "vbext_ct_MSForm"
         End Select
         Set oCM = .CodeModule
         With oCM
             '输出总的声明代码行数和总的代码行数
             Debug.Print .CountOfDeclarationLines, .CountOfLines
         End With
    End With
   Next
End Sub
       

发表评论