∈鱼杆 ---我的鱼塘

执着,坚定,友爱,勇敢(www.pumaboyd.com)Live Message

导航

Excel多文件合并(VBA方案)

Posted on 2008-04-12 17:57  ∈鱼杆  阅读(2964)  评论(4编辑  收藏  举报

这个问题是来自MM的。MM财务工作和Excel比较多。最近MM公司要统计各分公司的数据。由于城市比较多,需要汇总的工作量比较大。而且有很大一部分数据基础工作是Copy,Paste 数据。为表达对MM的关心和爱护(嘻嘻),写了这么一段VBA,可以大大减轻MM的工作量。

我用一个简单的原型来说明这个问题。

Excel文件:上海.xsl、北京.xsl、广州.xsl。这些数据由各地分公司提供,以3个城市说明问题。

MM的工作(这里忽略格式调整等):

1:将上面3个xsl文件拷贝到一个全国.xsl中。也就是要有 上海.sheet、北京sheet、广州sheet  3个sheet

2:同时又要将3个sheet的数据汇总到一个全国sheet中。

3:最终结果就是一个全国.xsl文件包含4个sheet(全国、上海、北京、广州)

最早想的办法是将Excel文件导入Access数据库,我再将数据导出。毕竟搞IT的,SQL语法对我来说没问题。但在导入Access中发现Excel文件有合并单元格问题,而且几个Excel列数不一样。发现导入Access对Excel文件本身要求高,方案失败。

没办法就只能使用宏来模拟用户的操作。已经很久没写VBA了,特意查了一下最早的一个是2006-12-28的Excel文件。(*^__^*),都是一年以前的事情了。本身就是现学现用,又这么长时间,基本忘过。好在这东西不复杂,看看原来的资料,再网上搜索了一下。一个晚上搞定了。

关键代码如下(伪代码,):

--调用选取文件对话框,选择多个xls文件

Filenames = Application.GetOpenFilename("Microsoft Office Excel Files (*.xls), *.xls", , "请选取文件", , True)

--循环FileNames,Copy当前文件内容,粘贴到新增的Sheet中(完成多个XLS 合并到一个xsl中),再将数据合并到全国sheet中

Workbooks(FileNames(i)).Worksheets(1).UsedRange.Copy

Worksheets.Add after:=Worksheets(1)

ActiveSheet.Paste

Workbooks(“总表名”).Worksheets(thisheetname).[A65536].End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste

 

原代码我就不提供了,这里提供方案下载,如果你有类似的操作,可以使用这个Excel。

合并DEMO方案Excel_VAB1

Google 标记: Excel, VBA