这个问题是来自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