联合多个Excel表单。 (粘贴在对方下面)

将Excel-Tables从多个文件复制并粘贴到单个文件的方法是什么? 特别是如何确定在makro中复制和粘贴使用的行的范围?

如果你确实是指表,你可以使用ListObjects集合引用它们。

试试这个(代码位于目标工作簿)
此代码将所有源表复制为单独的表格,其间有空行。 如果要将数据合并到单个表中,则需要复制lo.DataBodyRange而不是lo.Range ,并将标题行和转换处理lo.Range处理。

 Sub CopyTables() Dim wbFrom As Workbook Dim shFrom As Worksheet Dim shTo As Worksheet Dim lo As ListObject Dim clTo As Range ' Setup Destination for copied tables Set shTo = ThisWorkbook.Worksheets("DestinationSheet") ' <-- change name to your destination sheet name ' remove any existing data shTo.UsedRange.EntireRow.Delete Set clTo = shTo.Cells(1, 1) ' Loop through open workbooks For Each wbFrom In Application.Workbooks ' except destination wb If wbFrom.Name <> ThisWorkbook.Name Then ' loop through all sheets For Each shFrom In wbFrom.Worksheets ' loop through all tables on sheet For Each lo In shFrom.ListObjects lo.Range.Copy clTo ' offset to next paste location, leave one empty row between tables Set clTo = clTo.Offset(lo.ListRows.Count + 2, 0) Next Next End If Next End Sub 

替代的内部For循环粘贴到一个单一的范围

  For Each lo In shFrom.ListObjects lo.DataBodyRange.Copy clTo Set clTo = clTo.Offset(lo.ListRows.Count, 0) Next 

如果这是一次性操作,可能最快的方法是激活办公室剪贴板( Home标签右下angular的箭头)。 这允许最多24个分开的范围被收集并粘贴在另一个之下。

假设数据在一个工作簿中,并在每张表的第2行开始,如下例所示:

  • select所有选项卡
  • select第一张纸上的所有行
  • 反复按Ctrl + C,Ctrl + Page Down键复制所有数据
  • select一个新工作表并单击全部粘贴

请注意,只复制使用的范围,以便您可以复制整个工作表范围,而不需要find每个工作表上的最后一个单元格。

在这里输入图像说明