如下图所示:
vba工程中有许多组件,每个组件中都可能有vba代码,如果要把所有vba代码都删除,需要访问组件的CodeModule对象。
具体步骤如下:
- 先遍历所有VBComponent对象
- 获取所有VBComponent对象的CodeModule对象的CountOfLines,也就是总的代码行数。
- 最后用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
发表评论