如何将多张 Excel 文件合并为一个 Excel 文件?

如何将多张 Excel 文件合并为一个 Excel 文件?

我需要将数百个 Excel 文件合并为一个 Excel 文件。每个 Excel 文件都需要合并到工作簿中各自的工作表中,并且目标工作表需要具有原始文件的名称(减去扩展名)。这可能吗?

答案1

好吧,看起来你并没有为此付出任何努力,但由于我已经编写了这些宏,因此我会将它们提供给其他正在搜索的人。这些是在 excel 2007 中编写的,是更大流程的一部分。

需要注意的是,如果任何文件名超过 31 个字符,此操作将失败,因为 Excel 对工作表名称有字符限制

将文件合并为一个,并将工作表的名称设置为文件名 -

Sub CombineWSs()
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:\Documents and Settings\path\to"
    Set wbDst = ThisWorkbook
    strFilename = Dir(MyPath & "\*.xls", 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

现在遍历工作表以删除工作表名称的最后五个字符:.xlsx

Sub RenameWS()
Application.ScreenUpdating = False
Dim strName As String
Dim intLength As Integer

For Each Sheet In ActiveWorkbook.Worksheets
    strName = Sheet.Name
    intLength = Len(strName)
    strName = Left(strName, intLength - 5)
    Sheet.Name = strName

Next
Application.ScreenUpdating = True
End Sub

相关内容