【问题标题】:Merging workbooks into a master workbook with seperate sheet for each file将工作簿合并到主工作簿中,每个文件都有单独的工作表
【发布时间】:2014-05-24 16:11:42
【问题描述】:

我在一个文件夹中有 30 个 xlsx 文件,我希望将所有这些文件的第一张表合并到一个新工作簿中。问题是我不希望宏像 Ron 的 excel 合并工具那样将值复制粘贴到新主表的同一张表中。我想要一个宏来在主文件上创建新的 30 张工作表并从源文件中复制数据。我希望将新添加的工作表重命名为源文件名。我在论坛上搜索了几个小时,发现了下面的代码。除了工作表重命名之外,这很好用。有人可以查看代码并帮我在代码中添加工作表重命名部分吗?

Sub Merge2MultiSheets()
    Dim wbDst As Workbook
    Dim wbSrc As Workbook
    Dim wsSrc As Worksheet
    Dim MyPath As String
    Dim strFileName As String

    Application.DisplayAlerts = False
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    MyPath = "C:\Jude" ' change to suit
    Set wbDst = Workbooks.Add(xlWBATWorksheet)
    strFileName = Dir(MyPath & "\*.xlsx", vbNormal)

    If Len(strFileName) = 0 Then Exit Sub

    Do Until strFileName = ""

            Set wbSrc = Workbooks.Open(Filename:=MyPath & "\" & strFileName)

            Set wsSrc = wbSrc.Worksheets(1)

            wsSrc.Copy After:=wbDst.Worksheets(wbDst.Worksheets.Count)

           wbSrc.Close False

        strFileName = Dir()

    Loop
    wbDst.Worksheets(1).Delete

    Application.DisplayAlerts = True
    Application.EnableEvents = True
    Application.ScreenUpdating = True

End Sub

【问题讨论】:

  • “此问题未显示任何研究成果”

标签: vba excel


【解决方案1】:
wsSrc.Copy After:=wbDst.Worksheets(wbDst.Worksheets.Count)

wbDst.Worksheets(wbDst.Worksheets.Count).Name = strFileName

如果要包含路径,则需要删除反斜杠“\”和任何其他无效的工作表名称字符。

确保名称不包含以下任何字符:: \ / ? * [ 或 ]

【讨论】:

  • 工作表名称也不能超过 30 个字符。
猜你喜欢
  • 1970-01-01
  • 2021-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-24
  • 1970-01-01
  • 1970-01-01
  • 2022-12-14
相关资源
最近更新 更多