批量导出VBA工程中的Source

在做Excel宏相关项目的开发和维护过程中,我们经常需要导出VBA中的Source,但是Excel提供的宏编辑器中只能一个文件一个文件地导出,很不方便。

下面介绍2种批量导出的方法:

1.SourceTools 小插件

主要功能如下:

1.导入导出source

2.根据版本比较source(需要winmerge)

3.集成SVN(需要tortoiseSVN)

参考: http://www.codeproject.com/Articles/18029/SourceTools-xla

但是这个工具有个致命的缺点-----安装之后,导出用的工具栏按钮经常不出现。

(反正安装之后,导出按钮不出现的概率挺高的,不然我也不会去寻找下面一个方法,^_^)

 

2.自定义脚本

这个方法需要在VBA工程中新建一个Module,然后加入如下代码:

Sub exportVBSourceTool()
Dim ExportPath As String, ExtendName As String
Dim vbc As VBComponent
Dim i%

    'ExportPath = ThisWorkbook.Path     ’使用这个目录的话,就会直接导出到宏所在的目录
    ExportPath = "C:\export_VBASource"  'make sure the directory is exist before run

    For Each vbc In Application.VBE.ActiveVBProject.VBComponents
        'get module code line count
        i = ThisWorkbook.VBProject.VBComponents(vbc.Name).CodeModule.CountOfLines
        
        'if code count>=1,export
        'else skip
        If i >= 1 Then
            Select Case vbc.Type
            Case vbext_ct_ClassModule, vbext_ct_Document    'class module,excel object
                ExtendName = ".Cls"    'set extension name
            Case vbext_ct_MSForm    'form
                ExtendName = ".frm"
            Case vbext_ct_StdModule    'module
                ExtendName = ".Bas"
            End Select
            If ExtendName <> "" Then
                vbc.Export ExportPath & "\" & vbc.Name & ExtendName
            End If
        End If
    Next
End Sub

运行之前,还要做如下2件事情:

①引用Microsoft Visual Basic for Application Extensibility 5.3

VBA宏编辑器中,依次点击如下菜单:

工具 --> 参照設定 --> 在弹出的对话框中勾选“Microsoft Visual Basic for Application Extensibility 5.3” --> Click OK Button

②选择信任对VBA工程访问

Excel中,依次点击如下菜单:

工具 --> 宏 --> 宏安全 --> 信任对VBA工程对象模型的访问

设置好之后,运行就可以了,Source就导出到了指定的文件夹了~

 

posted @ 2013-10-22 17:22  yejg1212  阅读(2180)  评论(0编辑  收藏  举报