Sub ExportAllVbaModules()
Dim vbComp As Object
Dim exportPath As String
复制代码
' 导出目录,请修改为你自己的路径
exportPath = "C:\Temp\VBAExport\"
' 若文件夹不存在则创建
If Dir(exportPath, vbDirectory) = "" Then
MkDir exportPath
End If
' 导出所有模块、类模块、窗体
For Each vbComp In ThisWorkbook.VBProject.VBComponents
Select Case vbComp.Type
Case 1 ' 标准模块
vbComp.Export exportPath & vbComp.Name & ".bas"
Case 2 ' 类模块
vbComp.Export exportPath & vbComp.Name & ".cls"
Case 3 ' 表单
vbComp.Export exportPath & vbComp.Name & ".frm"
Case Else
' 忽略文档模块(如 Sheet1, ThisWorkbook)
End Select
Next vbComp
MsgBox "模块已导出到: " & exportPath, vbInformation
End Sub
💡 导出完后,文件夹下会看到 .bas, .cls, .frm 文件。
🧩 二、导入模块脚本(在新文件中运行)
打开一个新的空白 Excel 文件。
按 Alt + F11 → 插入模块。
复制以下脚本进去。
修改 importPath 为你刚刚导出模块所在目录。
运行 ImportAllVbaModules。
Sub ImportAllVbaModules()
Dim fso As Object
Dim folder As Object
Dim file As Object
Dim importPath As String
复制代码
importPath = "C:\Temp\VBAExport\" ' ← 修改为你的导出路径
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(importPath)
For Each file In folder.Files
If LCase(fso.GetExtensionName(file.Name)) Like "bas" Or _
LCase(fso.GetExtensionName(file.Name)) Like "cls" Or _
LCase(fso.GetExtensionName(file.Name)) Like "frm" Then
ThisWorkbook.VBProject.VBComponents.Import file.Path
End If
Next file
MsgBox "模块导入完成!", vbInformation