将多个Excel工作簿合并到一个具有多个工作表的工作簿中

我有大约70个不同的excel文件,我需要将其合并到一个主工作簿中。 我希望每个Excel文件在主工作簿中都有自己的工作表。 主工作簿中生成的工作表的名称无关紧要。

我从另一个网站检索到这个代码,但不能让它适合我的需要。 该代码规定所有要组合的文件都位于同一目录中。 我把它们放在这里“C:\ Users \ josiahh \ Desktop \ cf”

下面是现在的代码

Sub GetSheets() Path = "C:\Users\dt\Desktop\dt kte\" Filename = Dir(Path & "*.xls") Do While Filename <> "" Workbooks.Open Filename:=Path & Filename, ReadOnly:=True For Each Sheet In ActiveWorkbook.Sheets Sheet.Copy After:=ThisWorkbook.Sheets(1) Next Sheet Workbooks(Filename).Close Filename = Dir() Loop End Sub 

这是testing和按预期工作。 你明智的做法是使用Option Explicit并在将来适当地声明你的variables,虽然这不会导致你的代码有任何问题。

正如上面的评论所指出的,可能的失败是你传递给Dir函数的参数是不必要的限制:

=Dir(path & "*.xls")只会查看完全以“.xls”结尾的文件,而不会考虑更新的文件格式。 为了解决这个问题,do =Dir(path & "*.xls*")

代码如下:

 Option Explicit Const path As String = "C:\Users\dt\Desktop\dt kte\" Sub GetSheets() Dim FileName As String Dim wb As Workbook Dim sheet As Worksheet FileName = Dir(path & "*.xls*") Do While FileName <> "" Set wb = Workbooks.Open(FileName:=path & FileName, ReadOnly:=True) For Each sheet In wb.Sheets sheet.Copy After:=ThisWorkbook.Sheets(1) Next sheet wb.Close FileName = Dir() Loop End Sub