批量导出VBA工程中的Source

本文介绍两种批量导出Excel宏(VBA)源代码的方法:一是使用SourceTools插件,二是通过自定义VBA脚本实现。自定义脚本方法需先设置信任VBA工程访问,并引用特定组件。

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

 

转载于:https://www.cnblogs.com/yejg1212/p/3382833.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值