|
本帖最后由 dogingate 于 2018-7-18 00:03 编辑
Attribute VB_Name = "模块导出"
'''1、引用Microsoft Visual Basic for Application Extensibility 5.3,
'''2、并且选择信任对VBA工程访问)
Sub VBComponentsExporting()
Dim strExportFolderPath As String
Dim oVBComp As VBComponent
Dim oExportFolder As Object
Dim strExtName As String
Dim oWb As Workbook
Set oWb = ThisWorkbook
Set fso = CreateObject("scripting.filesystemobject")
strExportFolderPath = oWb.Path & "\" & "所有模块"
If Not fso.folderexists(strExportFolderPath) Then
fso.createfolder (strExportFolderPath)
End If
Set zd = CreateObject("scripting.dictionary")
For Each oVBComp In ThisWorkbook.VBProject.VBComponents
If Not zd.exists(oVBComp.Name) Then
Select Case oVBComp.Type
Case vbext_ct_StdModule 'case 1
zd(oVBComp.Name) = oVBComp.Name & ".bas"
Case vbext_ct_ClassModule 'case 2
zd(oVBComp.Name) = oVBComp.Name & ".cls"
Case vbext_ct_MSForm 'case 3
zd(oVBComp.Name) = oVBComp.Name & ".frm"
Case vbext_ct_Document 'case 100
If oVBComp.Name <> "ThisWorkbook" Then
For Each sht In ThisWorkbook.Worksheets
If sht.CodeName = oVBComp.Name Then
zd(oVBComp.Name) = sht.Name & ".txt"
End If
Next sht
Else
zd(oVBComp.Name) = oVBComp.Name & ".txt"
End If
End Select
End If
Next oVBComp
Set oVBProj = ThisWorkbook.VBProject
zdkeys = zd.keys
For i = 0 To zd.Count - 1
strVBCompName = zdkeys(i)
oVBProj.VBComponents(strVBCompName).Export strExportFolderPath & "\" & zd(strVBCompName)
Next i
MsgBox "所有模块导出完毕!"
End Sub
|
|