分享

使用VBA合并多个Excel文件

 昵称7781866 2013-01-20

今天一同学突然在Q上问起我如何将多个Excel文件合并到一个Sheet文件中,起初我是想通过编程来实现的,因为之前我用C++实现过一个Excel操作类的封装,也用该类实现过一些自动化工具。但考虑到这本来是个很简单的任务,相信Excel本身应该可以实现,于是度娘了下,找到了可以使用VBA来解决,但网上的代码要不有问题,要不操作不明白,经过摸索,决定写篇文章,让像我一样的小白用户从零来完成任务。

【过程】

         一、创建E:\test_excel目录,下面放上几个要合并的Excel文件。

      

         二、新打开一个Excel文件,先“开启开发工具”,如下图点击1,选择“Excel选项”,然后在“常用”选项卡中勾选“在功能区显示‘开发工具’选项卡”,保存后,就能看到了。


        三、开启宏,如上图所示,开发工具—宏安全性—宏设置里面。

        四、在Visual Basic里面选择"Sheet1",并编写相应的宏

  

相关代码:

  1. 'VBA for merge excel files,.just support for Excel 2007   
  2. 'Excel 2003 need change the codes   
  3. 'Author:naiveloafer   
  4. 'Date:2012-04-29   
  5. Sub naiveloafer()  
  6. Dim fs, f, f1, fc, s, x, rowss, columnss  
  7. Set fs = CreateObject("Scripting.FileSystemObject")  
  8. Set f = fs.GetFolder("E:\test_excel\"'Directory of excel files will be merge   
  9. Set fc = f.Files  
  10. x = 1  
  11.   
  12. For Each f1 In fc  
  13.   
  14. If Right(f1.Name, 4) = "xlsx" Then  
  15. Workbooks.Open (f1.Path)  
  16. rowss = Workbooks(f1.Name).Sheets(1).Range("A65536").End(xlUp).Row  
  17. columnss = Workbooks(f1.Name).Sheets(1).Columns.Count  
  18.   
  19. Workbooks(f1.Name).Sheets(1).Range("A1:z" & CStr(rowss)).Copy  
  20. Workbooks(1).Activate  
  21. Workbooks(1).Sheets(1).Range("A" & CStr(x) & ":z" & CStr(x + rowss)).Select  
  22. Workbooks(1).Sheets(1).Paste  
  23. Application.CutCopyMode = False  
  24.   
  25. x = x + rowss  
  26. Workbooks(f1.Name).Close savechanges:=False  
  27. End If  
  28.   
  29. Next  
  30.   
  31. End Sub  

       五、回到刚才的Excel中,点击宏,选择刚才的宏,运行即可,如果代码没问题,那就能在当前Sheet中显示合并的结果,当然如果你有编程经验可以选择调试才定位问题,修改等。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多