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

批量导出VBA工程中的Source的更多相关文章

  1. 调用其他VBA工程中的过程和函数以及API函数

    Excel VBA中,同一个应用程序下面包括多个工作簿,每个工作簿都有自己独立的VBAProject 在同一个VBA工程中,使用Call即可调用其他模块中的过程和函数,例如: Call Module2 ...

  2. AutoCAD批量导出点坐标

    需求背景: 需要批量导出DWG文件中的散点树的位置信息,以Excel文件格式存储. 实现方法: 在AutoCAD2012打开dwg文件,点击“插入”选项卡中的“提取数据”工具(或输入DATAEXTRA ...

  3. unity导出工程导入到iOS原生工程中详细步骤

    一直想抽空整理一下unity原生工程导入iOS原生工程中的详细步骤.做iOS+vuforia+unity开发这么长时间了.从最初的小小白到现在的小白.中间趟过了好多的坑.也有一些的小小收货.做一个喜欢 ...

  4. vue将指定区域的表格数据或element-ui中el-table的数据单笔或多笔批量导出excel

    公司在后台管理系统开发中用到了 vue+element-ui 组合的框架,但随着需求的越来越复杂,前端的工作难度也呈几何倍数递增,工作量随之增大.这不,在项目中增加一个将列表数据导出为excel的需求 ...

  5. SSIS 中将csv 文件批量导出到excel 文件,并设置excel 文件中某些列的data column format 为Text

    csv 文件是文本文件类型,但是打开csv 文件后(默认使用本地已经安装的excel 来打开excel 文件),默认显示出来的是general 类型(column data format)的数据, 这 ...

  6. 【Unity与Android】02-在Unity导出的Android工程中接入Google Admob广告

    我在上一篇文章 [Unity与Android]01-Unity与Android交互通信的简易实现) 中介绍了Unity与Android通讯的基本方法. 这一篇开始进入应用阶段,这次要介绍的是如何在An ...

  7. 批量导出access某表内容到word文档

    一.需求: 需要将表中每一条记录中的某些内容导出在一个word文档中,并将这些文档保存在指定文件夹目录下 二.界面,简单设计如下: 三.添加office相关引用 添加后可在解决方案资源管理器中看到: ...

  8. eclipse导出maven工程的可执行jar包

    一.eclipse导出maven工程的可执行jar包 建立两个maven工程 ZKServer 和ZKClient 注意:用maven进行开发管理的话,默认的打出来的jar包是不能运行的,需要在pom ...

  9. vba工程密码清除

    EXCEL vba工程密码破解 方法一:这种方法实际是避开VBA工程密码验证,即骗vba编辑器,该密码输入成功,请求放行.不管他是破解还是欺骗 能达到我们的目的角开就行________________ ...

随机推荐

  1. ionic3.x angular4.x ng4.x 自定义组件component双向绑定之自定义计数器

    本文主要示例在ionic3.x环境下实现一个自定义计数器,实现后最终效果如图: 1.使用命令创建一个component ionic g component CounterInput 类似的命令还有: ...

  2. 手机app有了短信验证码还有没必要有图片验证码?

    当然有必要,这里我们来聊一个恶意短信验证的案例,通过这个案例我们就能更好理解短信验证码和图片验证码这两者的关系了. 讨论防止恶意短信验证之前,我们先来看看什么是恶意短信验证及出现的原因. 恶意短信验证 ...

  3. git 下载指定tag版本的源码

    git clone --branch x.x.x https://xxx.xxx.com/xxx/xxx.git

  4. ubuntu16搭建harbor镜像库

    参考 https://blog.csdn.net/qq_35720307/article/details/86691752 目的:搭建本地镜像库,方便快速的存放和拉取需要的镜像文件.

  5. 防止活动上线时 微信openid 被伪造的解决办法

    背景 前不久上线了一个 campaign 项目,一个 h5,后端为php,用户可以在微信中通过网页授权的方式登录,然后用微信 openid 作为唯一标识符进行签到和抽奖的操作. 结果后期出现了很多脏数 ...

  6. Smart/400开发上手3: 练习实践

    练习题 在2006年1月1日之前入职且在职的营销员,给予年资补贴2000元: 符合以上条件的,再按以下标准一次性发放职级补贴: 职级代码 简称 补偿金额 A1 AD 6000 B1 SBM 5000 ...

  7. 安卓Dialog对话框多次显示而闪退的解决办法

    事情是这样子的,我在一个活动中自定义了一个AlertDialog,通过一个按钮点击即可弹出,而后来出现的情况是,第一次点击就没问题, 正常跳出,而第二次就直接程序闪退,然后报The specified ...

  8. 【6】JMicro微服务-服务日志监控

    如非授权,禁止用于商业用途,转载请注明出处作者:mynewworldyyl   1. 微服务相关 在前面的1到5节中,总共涉及服务提供者,服务消费者,服务监听服务,发布订阅服务,熔断器服务5种类型的猪 ...

  9. Storm官方提供的trident单词计数的例子

    上代码: public class TridentWordCount { public static class Split extends BaseFunction { @Override publ ...

  10. Form表单中不同的按钮进行不同的跳转

    本文参考:http://my.oschina.net/sallency/blog/300568 在开发工作共我们往往会遇到一个表单需要包含多个action不同的提交动作,这时候就不能在使用submit ...