如何用vba删除所有vba工程中的vba代码?

如下图所示:

vba工程中有许多组件,每个组件中都可能有vba代码,如果要把所有vba代码都删除,需要访问组件的CodeModule对象。

具体步骤如下:

  1. 先遍历所有VBComponent对象
  2. 获取所有VBComponent对象的CodeModule对象的CountOfLines,也就是总的代码行数。
  3. 最后用DeleteLines方法删除所有代码。

以下示例代码可以删除除了当前组件以外的其它所有组件中的vba代码:

Sub QQ1722187970()
   Dim oCM As CodeModule
   Dim oVC As VBComponent
   sName = Excel.Application.VBE.SelectedVBComponent.Name
   For Each oVC In Excel.ThisWorkbook.VBProject.VBComponents
     With oVC
        '不是当前选中的组件,则删除代码
        If .Name <> sName Then
            Set oCM = .CodeModule
            With oCM
                '获取所有的代码行数
                 ILine = .CountOfLines
                 '删除所有的代码
                .DeleteLines 1, ILine
            End With
         End If
    End With
   Next
End Sub

如果要删除具体的组件的vba代码,比如删除Sheet1类模块内的所有vba代码,可以用CodeName作为索引,直接访问相应的组件,代码如下:

Sub QQ1722187970()
'   Dim oCM As CodeModule
'   Dim oVC As VBComponent
   sName = Excel.Application.VBE.SelectedVBComponent.Name
   'Sheet1为CodeName,不是Name
   Set oVC = Excel.ThisWorkbook.VBProject.VBComponents("Sheet1")
'   For Each oVC In Excel.ThisWorkbook.VBProject.VBComponents
     With oVC
        '不是当前选中的组件,则删除代码
        If .Name <> sName Then
            Set oCM = .CodeModule
            With oCM
                '获取所有的代码行数
                 ILine = .CountOfLines
                 '删除所有的代码
                .DeleteLines 1, ILine
            End With
         End If
    End With
End Sub

 

       

发表评论