作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我当前的代码。
它可以满足我的需要,我只是想知道是否有一种方法可以循环浏览模块,而不必输入每个模块的名称。
Dim wb As Workbook
Set wb = ActiveWorkbook
Application.ScreenUpdating = False
TempFilePath = Environ$("temp") & "\"
TempFileName = "Cable Rework" & " " & Format(Now, "mm-dd-yy") 'this names the temp file as the Pallet request followed by the current date and time
FileExtStr = ".xls": FileFormatNum = 51
wb.SaveCopyAs TempFilePath & TempFileName & FileExtStr
Workbooks.Open (TempFilePath & TempFileName & FileExtStr)
With ActiveWorkbook
.VBProject.VBComponents.Remove .VBProject.VBComponents("Module1")
.VBProject.VBComponents.Remove .VBProject.VBComponents("Module2")
.VBProject.VBComponents.Remove .VBProject.VBComponents("Module3")
.VBProject.VBComponents.Remove .VBProject.VBComponents("Module4")
.Save
.Close
End With
Application.ScreenUpdating = True
End Sub
最佳答案
使用 For Each循环,可以循环遍历VBComponents
的整个集合并决定哪些需要删除。该集合还包含“文档模块”
每个人一个 Worksheet
以及 ThisWorkbook
所以您可能不想删除所有内容。
您可以使用 VBComponent.Type
查看每个组件的类型属性(property)。 Here是描述不同类型的列表(转到第二个表)。标准模块为 1,类模块为 2,用户表单为 3。
一旦你有了 For 循环,你只需要检查 Type
等于 1、2 或 3 然后调用 VBComponents.Remove
.
Sub Example()
Dim wb As Workbook
Set wb = ActiveWorkbook
Application.ScreenUpdating = False
TempFilePath = Environ$("temp") & "\"
TempFileName = "Cable Rework" & " " & Format(Now, "mm-dd-yy") 'this names the temp file as the Pallet request followed by the current date and time
FileExtStr = ".xls": FileFormatNum = 51
wb.SaveCopyAs TempFilePath & TempFileName & FileExtStr
Set wb = Workbooks.Open(TempFilePath & TempFileName & FileExtStr)
Dim VBComp As Variant
For Each VBComp In wb.VBProject.VBComponents
If VBComp.Type = 1 Or VBComp.Type = 2 Or VBComp.Type = 3 Then
wb.VBProject.VBComponents.Remove VBComp
End If
Next
wb.Save
wb.Close
Application.ScreenUpdating = True
End Sub
注意:通常情况下,在从该集合中删除项目时循环该集合很有可能导致循环元素出现问题。但是我没有遇到这个循环的任何问题,所以我没有做通常的解决方法,将要删除的对象保存到一个数组中,然后再删除它们。
关于excel - 有没有办法循环浏览excel工作表中的所有模块,然后全部删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71344178/
我是一名优秀的程序员,十分优秀!