将工作簿合并到主工作簿中,每个文件都有单独的工作表

时间:2014-05-24 16:11:42

标签: excel vba excel-vba

我在一个文件夹中有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

1 个答案:

答案 0 :(得分:0)

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

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

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

  

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