VBA实现将execl变成execl中的sheet

VBA 实现将多个独立的execl合并到已存在的execl表里

【以下回答由 GPT 生成】

首先,您可以使用以下步骤来实现将多个独立的Excel文件合并到一个已存在的Excel文件的工作表中:

  1. 打开目标文件,并创建一个新的工作表来存储合并后的数据。
Sub MergeFiles()
    Dim targetWorkbook As Workbook
    Dim targetWorksheet As Worksheet

    ' 打开目标文件
    Set targetWorkbook = Workbooks.Open("目标文件路径")

    ' 创建一个新的工作表来存储合并后的数据
    Set targetWorksheet = targetWorkbook.Sheets.Add(After:=targetWorkbook.Sheets(targetWorkbook.Sheets.Count))
    targetWorksheet.Name = "合并工作表"
  1. 使用文件对话框选择要合并的Excel文件。
    Dim fileDialog As FileDialog
    Dim selectedFiles As Variant

    ' 创建文件对话框
    Set fileDialog = Application.FileDialog(msoFileDialogFilePicker)

    ' 允许选择多个文件
    fileDialog.AllowMultiSelect = True

    ' 显示文件对话框
    If fileDialog.Show = -1 Then
        ' 获取所选文件的路径
        selectedFiles = fileDialog.SelectedItems

        ' 遍历所选文件
        For Each file In selectedFiles
            ' 处理每个文件
        Next file
    End If
  1. 使用循环遍历所选的每个Excel文件,并将其内容复制到目标文件的合并工作表中。
    ' 遍历所选文件
    For Each file In selectedFiles
        ' 打开要合并的Excel文件
        Set sourceWorkbook = Workbooks.Open(file)

        ' 确定要复制的数据区域
        Set sourceWorksheet = sourceWorkbook.Sheets(1) ' 假设要复制第一个工作表的数据
        lastRow = sourceWorksheet.Cells(sourceWorksheet.Rows.Count, 1).End(xlUp).Row ' 获取最后一行的行号
        lastColumn = sourceWorksheet.Cells(1, sourceWorksheet.Columns.Count).End(xlToLeft).Column ' 获取最后一列的列号

        ' 复制数据到目标文件的合并工作表中
        targetWorksheet.Range("A1").Resize(lastRow, lastColumn).Value = sourceWorksheet.Range("A1").Resize(lastRow, lastColumn).Value

        ' 关闭要合并的Excel文件
        sourceWorkbook.Close SaveChanges:=False
    Next file
  1. 最后,保存并关闭目标文件。
    ' 保存并关闭目标文件
    targetWorkbook.Close SaveChanges:=True
End Sub

请注意,在上述代码中,您需要将"目标文件路径"替换为目标文件的实际路径。此外,您还可以根据需要进行其他自定义,例如更改合并后的工作表名称或数据复制的起始位置。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^