Excel VBA将多个工作簿中的数据复制到母版图纸中

Excel VBA将多个工作簿中的数据复制到母版图纸中,excel,vba,Excel,Vba,我必须从100多个工作簿中复制数据,并将其粘贴到主工作簿中。 所有工作簿都位于“我的桌面”上的文件夹中:C:\Users\brw20\desktop\Project XYZ\Update\ 所有工作簿都包含一个名为“突变”的工作表,我必须打开每个工作簿,转到“突变”工作表,选择从第3行到第x行的a到J列(每个工作簿中的最后一行可能不同)。在主工作表中,我将数据粘贴到A列到J列,并在复制更多工作簿中的数据时继续粘贴/追加数据。我尝试过的下面给出的代码已经固定了针对每个复制页生成弹出窗口的行数(“剪

我必须从100多个工作簿中复制数据,并将其粘贴到主工作簿中。 所有工作簿都位于“我的桌面”上的文件夹中:C:\Users\brw20\desktop\Project XYZ\Update\

所有工作簿都包含一个名为“突变”的工作表,我必须打开每个工作簿,转到“突变”工作表,选择从第3行到第x行的a到J列(每个工作簿中的最后一行可能不同)。在主工作表中,我将数据粘贴到A列到J列,并在复制更多工作簿中的数据时继续粘贴/追加数据。我尝试过的下面给出的代码已经固定了针对每个复制页生成弹出窗口的行数(“剪贴板上有大量信息。您希望以后能够将这些信息粘贴到另一个程序中吗?”)。 所以,我想知道是否有人可以帮我创建一个VBA代码,它只复制固定的列,而不复制可变的行?我是VBA新手,非常感谢您的帮助

如果您需要任何澄清,请告诉我

非常感谢

Sub-LoopThroughDirectory()
将MyFile设置为字符串
将wb设置为工作簿
将ws设置为工作表
sPath=“C:\Users\brw20\Desktop\Project XYZ\Updated\”
暗色
MyFile=Dir(sPath&“*.xlsx”)
Application.ScreenUpdating=False
当我的文件“”时执行此操作
如果MyFile=“zmaster.xlsm”,则
出口接头
如果结束
工作簿。打开(sPath和MyFile)
'设置ws=wb.Sheets(2)
工作表(“突变”)。范围(“A3:J1000”)。副本
'调用CopyValues(Sheet1.Range(“A1:B12”)、Sheet1.Range(“A1:B12”))
活动工作簿。关闭
erow=Sheet1.单元格(Rows.Count,1).结束(xlUp).偏移量(1,0).行
ActiveSheet.Paste目标:=工作表(“Sheet1”)。范围(单元格(erow,1),单元格(erow,1))
'Workbooks.Open ThisWorkbook.Path&'\DgetData.xls'
MyFile=Dir
环
端接头
  • 尽量避免使用
    ActiveWorkbook
    ActiveSheet
    ,而是使用直接引用,如下所示:

    Set wbMast = Workbooks.Open(ThisWorkbook.Path & "\DgetData.xls")
    Set wbSrc = Workbooks.Open (sPath & MyFile)
    
  • 此命令(在2个变体中)通过查找源和目标区域中最后一个非空单元格,动态选择要复制的源和目标区域:

    Range(wbSrc.Worksheets("Mutation").cells(1, 3), _ 
          wbSrc.Worksheets("Mutation").Cells(100000, "J").end(xlup)).Copy  _
             destination:=wbMast.Sheets(1).Cells(1,1).End(xlUp).Offset(1,0)
    
  • 或者使用

       With wbSrc.Worksheets("Mutation")
            Range(.cells(1, 3), .Cells(100000, "J").end(xlup)).Copy  _
                destination:=wbMast.Sheets(1).Cells(1,1).End(xlUp).Offset(1,0)
       End With
    
    (此项检查wbMast中的A列和wbSrc中的J列,以查找最后一个非空单元格。)

  • 如果您仍然收到关于“…大量信息…”的消息


  • 可能会抑制该消息。

    今天,Excel提供了一种工具,允许您在不编写VBA代码的情况下执行此工作。在“数据”选项卡中查找“从文件中获取数据”按钮。整个手术需要10到15分钟。YouTube上有很多视频显示了这是如何做到的。感谢您的帮助,但根据建议工作表(“突变”)。范围(单元格(1,3),单元格(1000,“J”)。结束(xlUp))。复制会给出应用程序定义或对象定义的错误。请help@user3321984编辑了答案。
       With wbSrc.Worksheets("Mutation")
            Range(.cells(1, 3), .Cells(100000, "J").end(xlup)).Copy  _
                destination:=wbMast.Sheets(1).Cells(1,1).End(xlUp).Offset(1,0)
       End With
    
    Application.DisplayAlerts = False