This will create a folder using the base name of your Excel file, which is the filename without its extension, along with a vba subfolder. Your VBA modules will be placed there.
Set Reference to Microsoft Visual Basic for Applications Extensibility
Sub ExportModules( _
Optional PathToVBAModules As String = "" _
)
Dim objMyProj As VBProject
Dim objVBComp As VBComponent
Dim strExt As String
Set objMyProj = Application.VBE.ActiveVBProject
If PathToVBAModules = "" Then
MakeFolder _
ThisWorkbook.Path & _
"\" & _
GetBaseName( _
ThisWorkbook.Name _
) & _
"\"
MakeFolder _
ThisWorkbook.Path & _
"\" & _
GetBaseName( _
ThisWorkbook.Name _
) & _
"\vba"
PathToVBAModules = _
ThisWorkbook.Path & _
"\" & _
GetBaseName( _
ThisWorkbook.Name _
) & _
"\vba\"
Else
' Leave provided path
End If
For Each objVBComp In objMyProj.VBComponents
Select Case objVBComp.Type
Case vbext_ct_StdModule
strExt = ".bas"
Case vbext_ct_ClassModule
strExt = ".cls"
Case vbext_ct_MSForm
strExt = ".frm"
Case vbext_ct_Document
strExt = ".txt"
End Select
objVBComp.Export PathToVBAModules & objVBComp.Name & strExt
Next
End Sub

Leave a Reply