【问题标题】:Merge sheets into one sheet with specific sheet name将工作表合并为一张具有特定工作表名称的工作表
【发布时间】:2021-10-21 14:00:02
【问题描述】:

我使用一个宏将不同工作表的工作表合并到一个 Excel 文件中。它可以 100% 工作。
我在问是否有人可以帮助改进这个宏。
我需要的是每张纸都有文件名,而不是随机名称。

很遗憾,我不能对这段代码表示感谢,因为我不知道作者的名字。

代码

Sub mergeFiles()
    'Merges all files in a folder to a main file.
    
    'Define variables:
    Dim numberOfFilesChosen, i As Integer
    Dim tempFileDialog As FileDialog
    Dim mainWorkbook, sourceWorkbook As Workbook
    Dim tempWorkSheet As Worksheet
    
    Set mainWorkbook = Application.ActiveWorkbook
    Set tempFileDialog = Application.FileDialog(msoFileDialogFilePicker)
    
    'Allow the user to select multiple workbooks
    tempFileDialog.AllowMultiSelect = True
    numberOfFilesChosen = tempFileDialog.Show
    
    'Loop through all selected workbooks
    For i = 1 To tempFileDialog.SelectedItems.Count      
        'Open each workbook
        Workbooks.Open tempFileDialog.SelectedItems(i)
        
        Set sourceWorkbook = ActiveWorkbook
        
        'Copy each worksheet to the end of the main workbook
        For Each tempWorkSheet In sourceWorkbook.Worksheets
            tempWorkSheet.Copy After:=mainWorkbook.Sheets(mainWorkbook.Worksheets.Count)
        Next tempWorkSheet
        
        'Close the source workbook
        sourceWorkbook.Close
    Next i
End Sub

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    你需要为他复制的表声明一个新变量:

       Dim NewSheet As Worksheet
    

    然后你必须调整你复制的部分:

    For Each tempWorkSheet In SourceWorkbook.Worksheets
        Set NewSheet = tempWorkSheet.Copy(After:=mainWorkbook.Sheets(mainWorkbook.Worksheets.Count))
        NewSheet.Name = SourceWorkbook.Name
    Next tempWorkSheet
    

    通过这种非常简单的改编,所有工作表都将获得 SourceIile 的名称(包括“.Xls”),但如果 SourceFile 中有多个工作表,它可能会崩溃。 如果你使用

        NewSheet.Name = SourceWorkbook.Name + "_" + tempWorkSheet.Name
    

    相反,如果整个字符串超过 31 个字符的长度,您可能会遇到一些问题。

    【讨论】:

    • 不工作。它崩溃了
    • 它在哪里崩溃?哪个错误消息?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    • 2021-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多