EXCEL2007里面如何将一个文件夹下多个工作簿中不同数目的工作表合并到一个工作表中?

EXCEL2007里面如何将一个文件夹下多个工作簿中不同数目的工作表合并到一个工作表中,所有工作簿下工作表内容格式完全一致,请高手指点VBA代码,谢谢
不同的工作簿中,工作表数目都有若干,有的十几个,有的几十个,数目不等,现在要把所有的这些工作表全部合并到一个工作表

实现的方法和详细的操作步骤如下:

1、首先,下图在文件夹中包含六个工作簿,现在要将这六个工作簿合并为一个工作簿,如下图所示,然后进入下一步。

2、其次,完成上述步骤后,创建一个新的工作簿,如下图所示,然后进入下一步。

3、接着,完成上述步骤后,单击下面红框中的选项,如下图所示,然后进入下一步。

4、然后,完成上述步骤后,单击[汇总拆分]选项,如下图所示,然后进入下一步。

5、随后,完成上述步骤后,单击[合并多簿]选项,如下图所示,然后进入下一步。

6、接着,完成上述步骤后,点选[未打开文件]选项,如下图所示,然后进入下一步。

7、然后,完成上述步骤后,单击[添加文件]按钮以选择要添加的工作簿并进行添加,如下图所示,然后进入下一步。

8、随后,完成上述步骤后,单击[确定]按钮,如下图所示,然后进入下一步。

9、最后,完成上述步骤后,效果如下图所示。这样,问题就解决了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-11

1.将需要合并的excel工作簿文件放置在一个文件夹中。
每个文件夹中的工作簿都输入了简单的内容。

2.在该文件夹中,新建立一个新的excel工作簿文件。重命名为8.

3.打开新建立的excel工作簿文件8.按Alt+F11或者将鼠标移动到下方工作表名称sheet1上右键,选择查看代码。

4.在弹出的代码编辑窗口中,输入代码。注意:通过快捷键Alt+F11打开的窗口如下没有直接复制代码的面板,需要点击左上方的工程-VBA project模块,双击sheet1,即可打开代码窗口。而步骤3中的第二种方法可以直接打开代码输入窗口。

5.在代码窗口中,黏贴下列代码:

Sub CombineFiles()

  Dimpath           As String
   DimFileName       As String
   DimLastCell       As Range
   DimWkb            As Workbook
   DimWS             As Worksheet
   DimThisWB         As String
  
  
   Dim MyDir AsString
   MyDir =ThisWorkbook.path & "\"
   'ChDriveLeft(MyDir, 1) 'find all the excel files
  'ChDir MyDir
   'Match =Dir$("")
   
   ThisWB =ThisWorkbook.Name
  Application.EnableEvents = False
  Application.ScreenUpdating = False
   path =MyDir
   FileName =Dir(path & "\*.xls", vbNormal)
   Do UntilFileName = ""
      If FileName <> ThisWB Then
          Set Wkb = Workbooks.Open(FileName:=path & "\"& FileName)
          For Each WS In Wkb.Worksheets
              Set LastCell = WS.Cells.SpecialCells(xlCellTypeLastCell)
              If LastCell.Value = "" And LastCell.Address = Range("$A$1").AddressThen
              Else
                  WS.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
              End If
          Next WS
          Wkb.Close False
      End If
      FileName = Dir()
   Loop
  Application.EnableEvents = True
  Application.ScreenUpdating = True
   
   Set Wkb =Nothing
   Set LastCell= Nothing
End Sub


6.点击菜单栏运行-运行子过程-用户窗体。关闭代码输入窗口。打开excel工作簿8.可以看到下方已经多了很多新的工作表——此时,我们已经将之前的工作簿中的工作表都复制到了这一新建的工作簿中。

第2个回答  2013-04-26
解释一下"合并"的意思.
或者你可以先参考下贴,如果情况不同,请追问.
http://zhidao.baidu.com/question/544088247?&oldq=1追问

这个“合并”,就是将所有工作簿下所有工作表里面的内容复制粘贴到一起,比方说某文件夹下有很多工作簿,工作簿A中有5个工作表、工作簿B中有8个工作表、工作簿C中有14个工作表、工作簿D有9个工作表、工作簿E有66个工作表……
现在要将这些工作簿中的100多个工作表中的内容复制粘贴到一个工作表里面,怎么编写VBA代码,本人非计算机专业,才开始学VBA,求指点,感激万分!!

追答

我给你的链接就是将你说的这种情况的工作表的某个区域粘贴依次复制粘贴到同一工作表中,逐行向下排列.
如果你的区域不固定,有没有判断标准(比如以A列最后一个有数据的单元格为标志,从A1单元格开始的n行m列的值粘贴到汇总表里)?

追问

所有工作表里面表格结构、字段完全一致,只是记录条数不同,数据都是在A1开始的,字段名从A1到CF1

追答

Sub 汇总数据()
Dim p As String, f As String
Dim s As Worksheet
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "请选定要汇总的文件所在目录"
.Show
If .SelectedItems.Count = 0 Then Exit Sub
p = .SelectedItems(1) & "\"
End With

Application.ScreenUpdating = False
f = Dir(p & "*.xls")
Do While f ""
Set w = Workbooks.Open(p & f)
For Each s In w.Sheets
s.UsedRange.Copy ThisWorkbook.Sheets(1).Range("a65536").End(xlUp).Offset(1, 0)
Next
w.Close False
f = Dir
Loop
Application.ScreenUpdating = True
MsgBox "干完收工!"
End Sub

本回答被提问者采纳
相似回答