VBA宏 合并EXCEL
1、合并多个Excel工作簿
- Sub MergeWorkbooks()
- Dim FileSet
- Dim i As Integer
- On Error GoTo
- Application.ScreenUpdating = False
- FileSet = Application.GetOpenFilename(FileFilter:="Excel 2003(*.xls),*.xls,Excel 2007(*.xlsx),*.xlsx", _
- MultiSelect:=True, Title:="选择要合并的文件")
- If TypeName(FileSet) = "Boolean" Then
- GoTo ExitSub
- End If
- For Each Filename In FileSet
- Workbooks.Open Filename
- Sheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
- Next
- ExitSub:
- Application.ScreenUpdating = True
- End Sub
2、合并一个工作簿下多个一致性SHEET
- Function LastRow(sh As Worksheet)
- On Error Resume Next
- LastRow = sh.Cells.Find(what:="*", _
- After:=sh.Range("A1"), _
- Lookat:=xlPart, _
- LookIn:=xlFormulas, _
- SearchOrder:=xlByRows, _
- SearchDirection:=xlPrevious, _
- MatchCase:=False).Row
- On Error GoTo
- End Function
- Sub MergeSheets()
- Dim sh As Worksheet
- Dim DestSh As Worksheet
- Dim Last As Long
- Dim shLast As Long
- Dim CopyRng As Range
- Dim StartRow As Long
- Application.ScreenUpdating = False
- Application.EnableEvents = False
- '新建“汇总”Sheet
- Application.DisplayAlerts = False
- On Error Resume Next
- ActiveWorkbook.Worksheets("汇总").Delete
- On Error GoTo
- Application.DisplayAlerts = True
- Set DestSh = ActiveWorkbook.Worksheets.Add
- DestSh.Name = "汇总"
- '开始复制的行号,无表头设置为1
- StartRow =
- For Each sh In ActiveWorkbook.Worksheets
- If sh.Name <> DestSh.Name Then
- Last = LastRow(DestSh)
- shLast = LastRow(sh)
- If shLast > And shLast >= StartRow Then
- Set CopyRng = sh.Range(sh.Rows(StartRow), sh.Rows(shLast))
- If Last + CopyRng.Rows.Count > DestSh.Rows.Count Then
- MsgBox "超过最大容量!"
- GoTo ExitSub
- End If
- CopyRng.Copy
- With DestSh.Cells(Last + , "A")
- .PasteSpecial xlPasteValues
- .PasteSpecial xlPasteFormats
- Application.CutCopyMode = False
- End With
- End If
- End If
- Next
- ExitSub:
- Application.GoTo DestSh.Cells()
- DestSh.Columns.AutoFit
- Application.ScreenUpdating = True
- Application.EnableEvents = True
- End Sub
VBA宏 合并EXCEL的更多相关文章
- 利用VBA宏解除Excel保护
复制以下代码并录制宏,运行一次即可. Option Explicit Public Sub AllInternalPasswords() ' Breaks worksheet and workbook ...
- C#调用Excel VBA宏
近日的一系列工作是做网站的营运维护,因此做了大量的支持工具.有Excel中写VBA的,也有直接C#做的工具.有时需要在C#中执行Excel VBA宏,甚至有时还需要在执行了VBA宏之后,获取返回值再进 ...
- [转]C#调用Excel VBA宏
[转载自]http://www.shangxueba.com/jingyan/95031.html 附上一段原创常用代码 计算列标题字符串 Function CalcColumn(ByVal c As ...
- Excel 导出指定行为txt文件(VBA,宏)
要从Excel 多个sheet内导出指定行为txt文件,懒得用C#了,写个VBA宏 Sub Export() Dim FileName As Variant Dim Sep As String Dim ...
- C#调用Excel VBA宏[转载]
原文地址:https://www.cnblogs.com/heekui/archive/2008/03/30/1129355.html 近日的一系列工作是做网站的营运维护,因此做了大量的支持工具.有E ...
- 功能区按钮调用Excel、PowerPoint、Word中的VBA宏:RunMacro
功能区按钮调用Excel.PowerPoint.Word中的VBA宏:RunMacro 众所周知,Excel.PPT.Word文档或加载宏文件中可以写很多过程和函数,调试的过程中当然可以按F8或F5直 ...
- 使用VBA批量转换Excel格式,由.xls转换成.xlsx
问题分析: Excel2007以前的格式是.xls,之后的格式是.xlsx.打开单独的一个Excel文档,使用“另存为”功能,可以很轻松的转换格式.但是面对几百个Excel表这样就太累了,搜索很久,也 ...
- 在VBA中调用excel函数
以前不太会用VBA时,都是在excel中使用函数来计算一些数据.毕竟函数不如代码,效率比较低.所以,就学着怎么在VBA中引用Excel函数.平时我用得比较多的函数就是countif和sumif函数.1 ...
- 合并Excel文件
//合并Excel文件 private void MargeExcelFile(string destFile, string dirPath) { DirectoryInfo dir = new D ...
随机推荐
- 阿里巴巴开源技术 WebX
0. WebX项目目前已开源, 项目开源地址:https://github.com/webx/citrus-sample.git 项目参考文档:http://www.openwebx.org/docs ...
- php中的常用数组函数(五)(数组中获取键名集合)
array_keys($arr, $search_value, $strict); --数组中获取键名的集合. //参数1 要检索的数组:参数2 要检索的键值 默认NULL: 参数3 是否严格比较(= ...
- python-ldap实现登录案例
ldap_config = { 'ldap_path': 'ldap://xx.xx.xx.xx:389', 'base_dn': 'ou=users,dc=ledo,dc=com', 'ldap_u ...
- 七个结构模式之代理模式(Proxy Pattern)
定义: 给某一个对象提供一个代理或者占位符,并由代理类来控制对原对象的访问.代理对象在客户端和实际对象之间启到了中介作用,并且强调了代理类对原对象的控制作用.例如:安全代理.缓冲代理.远程代理等. 结 ...
- JAVA多线程之间共享数据BlockingQueue介绍
在JAVA的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题.通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利. ...
- struts工程建立配置细节
ActionForm ActionForm是用于存放表单提交的数据. 1.一个action是否必须配置一个actionForm,可以没有2.一个action是否可以配置多个表单?不可以,最多一个 在j ...
- T3 - 构建大型 Web 应用的 JavaScript 框架
T3 是一个用于构建大型 Web 应用程序的客户端 JavaScript 框架.T3 和大多数的 JavaScript 框架不同.它的意思是一小部分的整体架构,它允许你建立可扩展的客户端代码.T3 应 ...
- io.js - 兼容 NPM 平台的 Node.js 新分支
io.js(JavaScript I/O)是兼容 NPM 平台的 Node.js 新分支,由 Node.js 的核心开发者在 Node.js 的基础上,引入更多的 ES6 特性,它的目的是提供更快的和 ...
- 你真的知道setTimeout是如何运行的吗
大家看下如下代码,猜猜执行结果: var start = new Date; setTimeout(function(){ console.log('时间流逝了:'+(new Date - start ...
- Delphi 获取系统时间后格式化输出
问题:客户现场程序运行提示时间格式不对导致的错误,原因是与开发环境及公司内部测试环境的日期格式不一致: 解决:统一强制转换: //引用单元:SysUtils //目的:实现跨环境兼容不同日期格式,如果 ...