在做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就导出到了指定的文件夹了~