关于将不同工作簿中格式相同工作表合并到另一工作簿中的代码再讨论
2010-05-03 12:05
302 查看
以前的操作方式是首先将要提取数据工作簿打开,获得要复制的区域,然后再激活目标工作簿,将数据复制进去,时间上太慢,现在学会了创建工作簿对象,由于不需要在源工作簿中写入数据,只是取得数据即可,所以不需打开源工作簿,利用创建工作簿对象即可.
再一个,既然格式相同,往往源工作簿的文件名也具有相似的命名规则,再者,即使是不相似也无所谓,可以通过创建一个文件搜索对象,在指定文件夹中搜索特定文件,然后将其保存到数组中,利用它就可以创建工作簿对象.
先看一下工作簿所在的文件夹样式:
这是把所有需合并的工作簿都放在了同一文件夹下,(一会再考虑如果在不同文件夹下,是否可行?!!)
现在要求做的是将xx***.xls合并到英语工作簿中,以便于统计学分等.比如统计每个学生(按学籍号)的实修学分,这就可以用到条件求和,分析出每个学生的最终学分看是否够毕业的条件.
源程序如下:
Sub 如何将多个工作簿中格式一致的工作表数据合并到同一工作簿中()
'首先获得需要合并的工作簿文件名
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Dim i As Integer, xls() As String
Dim sr As FileSearch '定义一个文件搜索对象
Set sr = Application.FileSearch
sr.LookIn = "E:胶州一中" '注意路径,换成你实际的路径
sr.Filename = "xx*.xls" '搜索所有文件
sr.Execute '执行搜索
ReDim xls(sr.FoundFiles.Count)
For i = 1 To sr.FoundFiles.Count
xls(i) = sr.FoundFiles(i) '因为下面需要打开指定路径下的文件,故就不需再去路径名了,直接将完整路径输入即可.
Debug.Print xls(i)
Next
'设置一个工作簿对象,获取各学段各学科的学分数据并将其复制到同一工作簿中
Dim wb As Workbook, j As Integer, TotalR As Integer
Debug.Print ActiveWorkbook.Name
For i = 1 To sr.FoundFiles.Count
TotalR = Range("A65536").End(xlUp).Row
Set wb = GetObject(xls(i))
With wb.Sheets(1)
.Range(.Cells(2, 1), .Cells(.Range("A65536").End(xlUp).Row, .Range("IV1").End(xlToLeft).Column)).Copy
End With
Range(Cells(TotalR + 1, 1), Cells(TotalR + 1, 1)).PasteSpecial xlPasteAll
TotalR = Range("A65536").End(xlUp).Row
Debug.Print TotalR
Application.CutCopyMode = False
wb.Close savechanges:=False
Next i
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.CutCopyMode = True
Cells.Columns.AutoFit
End Sub
今天你菊子曰了么?
再一个,既然格式相同,往往源工作簿的文件名也具有相似的命名规则,再者,即使是不相似也无所谓,可以通过创建一个文件搜索对象,在指定文件夹中搜索特定文件,然后将其保存到数组中,利用它就可以创建工作簿对象.
先看一下工作簿所在的文件夹样式:
这是把所有需合并的工作簿都放在了同一文件夹下,(一会再考虑如果在不同文件夹下,是否可行?!!)
现在要求做的是将xx***.xls合并到英语工作簿中,以便于统计学分等.比如统计每个学生(按学籍号)的实修学分,这就可以用到条件求和,分析出每个学生的最终学分看是否够毕业的条件.
源程序如下:
Sub 如何将多个工作簿中格式一致的工作表数据合并到同一工作簿中()
'首先获得需要合并的工作簿文件名
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Dim i As Integer, xls() As String
Dim sr As FileSearch '定义一个文件搜索对象
Set sr = Application.FileSearch
sr.LookIn = "E:胶州一中" '注意路径,换成你实际的路径
sr.Filename = "xx*.xls" '搜索所有文件
sr.Execute '执行搜索
ReDim xls(sr.FoundFiles.Count)
For i = 1 To sr.FoundFiles.Count
xls(i) = sr.FoundFiles(i) '因为下面需要打开指定路径下的文件,故就不需再去路径名了,直接将完整路径输入即可.
Debug.Print xls(i)
Next
'设置一个工作簿对象,获取各学段各学科的学分数据并将其复制到同一工作簿中
Dim wb As Workbook, j As Integer, TotalR As Integer
Debug.Print ActiveWorkbook.Name
For i = 1 To sr.FoundFiles.Count
TotalR = Range("A65536").End(xlUp).Row
Set wb = GetObject(xls(i))
With wb.Sheets(1)
.Range(.Cells(2, 1), .Cells(.Range("A65536").End(xlUp).Row, .Range("IV1").End(xlToLeft).Column)).Copy
End With
Range(Cells(TotalR + 1, 1), Cells(TotalR + 1, 1)).PasteSpecial xlPasteAll
TotalR = Range("A65536").End(xlUp).Row
Debug.Print TotalR
Application.CutCopyMode = False
wb.Close savechanges:=False
Next i
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.CutCopyMode = True
Cells.Columns.AutoFit
End Sub
今天你菊子曰了么?
相关文章推荐
- 关于合并相同格式工作簿到同一空白工作簿的再讨论
- 【原创】如何将多个工作簿中相同格式的工作表合并到一个工作表中
- 合并当前目录下所有工作簿的全部工作表宏代码
- 关于结构相同,数据不同的数据库进行一个表数据合并入另一个数据库中的表
- 关于Excel下通过VBA实现工作簿文件下工作表的合并
- AE+C# 实现MERGE, AE实现相同结构图层的合并C#代码(转载)
- 相同代码在GCC不同版本(3.4.4和4.5.3)的不同结果
- Excel 关于新建xls文件 新建sheet 合并sheet的VBA操作代码
- #个人博客作业Week2——关于代码规范的讨论
- (课堂讨论)关于如何使代码得到有效维护
- 我也提一个关于递归的问题,代码简单,不绕,希望一起讨论一下~
- 关于xcode不同版本打开相同工程问题
- AE实现不同图层的合并C#代码
- BlueStack与真机的运行相同代码,效果不同的解决
- TortoiseGit不同分支合并代码2
- 关于php代码格式小体会
- [转]关于ffmpeg 的总结(一个linux 下 集 屏幕录像录音,音频视频转换,合并音频视频文件,格式转换于一身的命令)
- 13-1盒模型代码简写关于颜色的css样式也是可以缩写的,当你设置的颜色是16进制的色彩值时,如果每两位的值相同,可以缩写一半。 例子1: p{color:#000000;} 可以缩写为: p{
- 关于文件转换代码和openoffice服务在不同的linux上报错conversion failed: could not load input document的问题
- 关于ffmpeg 的总结(一个linux 下 集 屏幕录像录音,音频视频转换,合并音频视频文件,格式转换于一身的命令)