试试这个:
Public Sub ExportVBAComponents()
Dim wbPath As String
Dim vbComp As Object
Dim exportPath As String
wbPath = ActiveWorkbook.Path
For Each vbComp In ActiveWorkbook.VBProject.VBComponents
exportPath = wbPath & "\" & vbComp.Name & Format$(Now, "_yyyymmdd_hhnnss")
Select Case vbComp.Type
Case 1 ' Standard Module
exportPath = exportPath & ".bas"
Case 2 ' UserForm
exportPath = exportPath & ".frm"
Case 3 ' Class Module
exportPath = exportPath & ".cls"
Case Else ' Anything else
exportPath = exportPath & ".bas"
End Select
On Error Resume Next
vbComp.Export exportPath
On Error GoTo 0
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
上面的代码会将您的所有VBA组件/模块导出ActiveWorkbook到与工作簿相同的位置.它将使用组件名称作为文件名的一部分,并将添加时间戳.由于您有超过100个模块,因此最好更改导出路径以包含一个子文件夹,以便将它们组合在一起.
注意:要使其生效,您需要选择选项>信任中心>信任中心设置...>宏设置>信任对VBA项目对象模型的访问权限.否则你会For Each在行中出现一些随机错误.如果您担心,可以在之后勾选该选项.