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

  • 相关阅读:
    使用QTM 博客客户端
    sdut 2080 最长公共子序列问题
    sdut 1730 数字三角形问题
    HDOJ 1905 Pseudoprime numbers(模运算)
    HDU 1285确定比赛名次(拓补排序)
    HDU 2094产生冠军(map)
    HDOJ 1228 A+B(map水题)
    HDOJ 1713 相遇周期 (最大公约数与最小公倍数)
    HDOJ 2098 分拆素数和(筛选法求素数)
    (转)最大子序列和问题
  • 原文地址:https://www.cnblogs.com/yejg1212/p/3382833.html
Copyright © 2020-2023  润新知