常用功能加载宏——多个工作簿合并到一个工作簿
时间:2022-07-22
本文章向大家介绍常用功能加载宏——多个工作簿合并到一个工作簿,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
对于做管理工作的,收集表格这种工作应该会经常有,设计一个表格模板,发给各个有关单位去填写,收集起来后再合并到一起。
如果表格太多,一个一个的手动操作肯定很麻烦,设计一个VBA程序来合并就非常方便了:
首先在customUI.xml中增加代码:
<menu id="rbmenuMergeSplit" label="合并拆分 " size="large" imageMso="ReviewCombineRevisions">
<button id="rbbtnMergeWb" label="合并工作簿" onAction="rbbtnMergeWb" imageMso="FileSaveAsExcelXlsx" />
</menu>
回调函数:
Sub rbbtnMergeWb(control As IRibbonControl)
Call MShtWk.MergeWb
End Sub
函数实现:
Sub MergeWb()
Dim strDir As String
Dim RetDirs() As String, RetFiles() As String
'选择要查找的文件夹
strDir = GetFolderPath()
If VBA.Len(strDir) = 0 Then Exit Sub
'遍历获取文件
If ScanDir(strDir, RetDirs, RetFiles) = -1 Then Exit Sub
'记录活动工作簿
Dim wb As Workbook
Set wb = ActiveWorkbook
'关闭屏幕更新,提高速度
Application.ScreenUpdating = False
Dim i As Long
Dim flag As Boolean
Dim tmp As Workbook
For i = 0 To UBound(RetFiles)
'过滤活动工作簿和打开的临时文件
If RetFiles(i) <> wb.FullName And VBA.InStr(RetFiles(i), "~$") = 0 Then
flag = False
'避免用Or将多个判断连接在一起,因为那样会每一个判断都执行
If VBA.InStr(RetFiles(i), ".xls") Then
flag = True
ElseIf VBA.InStr(RetFiles(i), ".xls") Then
flag = True
ElseIf VBA.InStr(RetFiles(i), ".xlsx") Then
flag = True
ElseIf VBA.InStr(RetFiles(i), ".xlsm") Then
flag = True
End If
If flag Then
Set tmp = Workbooks.Open(RetFiles(i), False)
'复制每一个Sheet数据,这里可以根据自己实际需要来复制
tmp.Worksheets.Copy After:=wb.Worksheets(wb.Worksheets.Count)
tmp.Close False
End If
End If
Next
Application.ScreenUpdating = True
Set wb = Nothing
Erase RetDirs, RetFiles
End Sub
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- IE11出现"__doPostBack”未定义
- latex()、ploy2sym()、symsum()的妙用
- 性能最佳实践:MongoDB数据建模和内存大小调整
- 节省你生命的一个小技术No.193
- K8S 生态周报| Traefik v2.3.0-rc2 发布
- 如何从 Notion 批量导出 Markdown?
- 【LeetCode】1518. 换酒问题
- OBS推流工具使用说明
- Python多进程
- app反编译遇到360加固,傻瓜式脱壳
- Java底层-本地接口(JNI)
- 如何从最坏、平均、最好的情况分析复杂度?
- 利用Python进行MR栅格数据处理
- 利用Sql处理MR栅格数据
- Netty组件之Channel注册