将多个 Excel 个工作簿合并为一个包含多个工作表的工作簿
Combine Multiple Excel Workbooks into one Workbook with multiple sheets
我有大约 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
这已经过测试并按预期工作。您最好使用 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
我有大约 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
这已经过测试并按预期工作。您最好使用 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