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

问题描述:

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

我从另一个网站上检索到这个代码,但不能使它适合我的需要。该代码规定所有要组合的文件都位于同一个目录中。我让他们在这里位于“C:\用户\ josiahh \桌面\ 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 
+0

*不能使它工作* 2015-01-26 23:05:18

+0

它不会导入任何内容。我将运行宏并且什么都不会发生。 – 2015-01-26 23:06:13

+0

你有没有采取*任何*步骤来自行调试? – 2015-01-26 23:08:22

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

如上评论指出,可能出现的故障是,你传递给Dir函数的参数是不必要的限制:

=Dir(path & "*.xls")将只寻找恰好是“.xls”结尾的文件,也不会考虑更新的文件格式。要解决的是,下面做=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 
+0

谢谢你的回答,但它仍然没有工作。它看起来不像你改变代码以外的任何其他显式选项? – 2015-01-26 23:22:04

+0

我确实改变了一些东西,实际上我的代码和你的代码是完全不同的,因为我已经声明了我使用Option Explicit的变量,我添加了一个工作簿变量。请按照我的方式完全复制代码 – 2015-01-26 23:24:04

+0

感谢您的代码。我必须在我的文件名后添加一个\以使其起作用。非常感激。 – 2015-01-26 23:39:46