【问题标题】:Combine Multiple Excel Workbooks into one Workbook with multiple sheets将多个 Excel 工作簿合并为一个包含多个工作表的工作簿
【发布时间】:2015-01-26 22:56:31
【问题描述】:

我需要将大约 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

【问题讨论】:

  • 无法正常工作 什么不工作?
  • 它不会导入任何东西。我会运行宏,什么都不会发生。
  • 您有没有采取任何步骤自行调试?
  • 此代码仅查找 *.xls 文件——这可能是问题所在(假设您的文件是较新的 xlsm/xlsx 格式,它们不会被此函数拾取)。
  • '70 个不同的 excel 文件'是 97-2003 格式的工作簿吗?您的文件掩码查找的是 *.xls,而不是 *.xls? (例如 *.xlsx、*.xlsm、*.xlsb 等)。

标签: vba excel


【解决方案1】:

这是经过测试的,可以按预期工作。明智的做法是使用Option Explicit 并在将来适当地声明变量,尽管这不会对您的代码造成任何问题。

如上面的 cmets 所示,可能的失败是您传递给 Dir 函数的参数是不必要的限制:

=Dir(path &amp; "*.xls") 只会查找完全以“.xls”结尾的文件,不会考虑较新的文件格式。要解决这个问题,请执行=Dir(path &amp; "*.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

【讨论】:

  • 感谢您的回答,但仍然无法正常工作。除了显式选项之外,您似乎没有更改代码中的任何内容?
  • 我确实改变了一些东西,实际上我的代码与你的完全不同,因为我已经声明了我的变量我使用了 Option Explicit 我添加了一个工作簿变量。请完全按照我的方式复制代码尝试一下
  • 感谢您的代码。我必须在我的文件名后添加一个 \ 才能让它工作。非常感谢。
猜你喜欢
  • 2014-12-14
  • 1970-01-01
  • 1970-01-01
  • 2022-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-07
相关资源
最近更新 更多