如下图所示:

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


发表评论