当前位置: 首页 > 知识库问答 >
问题:

试图从工作簿中的多个工作表复制特定范围到另一个工作簿中的一个工作表vba Excel?

邢鸿博
2023-03-14
    Sub CollectData()
    Dim wb1 As Workbook
    Dim wb2 As Workbook
    Dim ws1 As Worksheet
    Dim ws2 As Worksheet
    Application.DisplayAlerts = False
    Set wb1 = ThisWorkbook
    Set wb2 = Workbooks.Open("Path")
    Set ws1 = wb1.Sheets("Jan")
    For Each ws2 In wb2.Sheets
    If Len(ws2.Name) > 0 Then
    ws2.Range("A2:G50").Copy Destination:=ws1.Range("A2:G50")
    End If
    Next ws2
    Application.DisplayAlerts = True
    wb2.Close (savechanges = True)

谢谢,问候

共有1个答案

苏乐童
2023-03-14

我也是一个初学者,我在我的平板电脑上打字,所以我不能测试您的代码,但看起来您总是粘贴到相同的范围,从而覆盖了循环中以前的粘贴。您的目标范围需要是动态的,才能粘贴到下一个空范围中,以避免覆盖。

更新:

我不得不回到这个问题上来,因为我假设您每次运行循环时都在复制以前的粘贴。我的代码可能有点粗糙,但正如我所说的,我自己仍然在学习基础知识。更新工作簿中的“路径”。打开行并尝试一下。应该对你有用。

Sub CollectData()
    Dim wb1 As Workbook
    Dim wb2 As Workbook
    Dim ws1 As Worksheet
    Dim ws2 As Worksheet
    
    Dim NextRow As Long
    
    Set wb1 = ThisWorkbook
    Set ws1 = wb1.Sheets("Jan")
  
    Application.DisplayAlerts = False
    
    Set wb2 = Workbooks.Open("Path")
   
    For Each ws2 In wb2.Sheets
    If Len(ws2.Name) > 0 Then
    NextRow = ws1.Cells(Rows.Count, 1).End(xlUp).Row + 1
    ws2.Range("A2:G50").Copy ws1.Range("A" & NextRow)
    End If
    Next ws2
    Application.DisplayAlerts = True
    wb2.Close True
End Sub
 类似资料:
  • 试图从当前工作簿“Create Report.xlsm”中复制工作表名称“Headings Explantions”,该工作簿打开到我要求打开的工作簿中,我得到了下标超出范围的错误

  • 我正试图将所有工作表(7张)从workbook1(wb1)复制到WB2。wb1包含命令按钮,但我不希望它们出现在我的新工作簿中。我正在使用循环将单个工作表从一个工作簿复制到另一个工作簿。但是复制到第二张时出错了。我使用的代码如下:- 循环第一次成功运行,但对于i=2,代码给出错误

  • 我需要一个宏,它可以根据我选择的单元格从我所在的工作簿中复制整行。我已经可以这样做了,使用以下方法: 但是,我需要它将其(格式化和全部)粘贴到关闭的工作簿的第一个空行(基于B列)。R: \dasboards\wo。xlsm公司

  • 我写了下面的代码,并不断地看到。我试图克服这个问题,但似乎没有任何效果。我正试图从一个工作簿复制整个工作表,并将其粘贴到另一个工作簿中:

  • 我对宏是新手,需要帮助。我在一个文件夹中有几个工作簿,每个工作簿有四个工作表。现在我想要一个mocro它复制数据从每个工作簿(工作表明智)和过去在我的主工作簿(工作表明智)意味着数据1应该被粘贴一个在另一个下面在我的主工作簿在工作表1和工作表2分别。*工作簿名称可以是文件夹中的任何东西。有人能帮我完成整个代码吗?我有宏从一张表到我分配的表的数据,但它复制粘贴数据从打开的表,而不是按表名明智的。有人

  • 我在工作簿中的工作表上有一个按钮,工作簿中有一个数据透视表,名为“保修模板.xlsm”。我希望该按钮复制从A5开始的第一列数据,并将该列粘贴到另一个名为“QA Matrix Template.xlsm”的工作簿中。我希望复制的数据在列的最后一个空白行结束,我希望粘贴数据的范围也粘贴在从D12开始的第一个空白行上。 我得到下标错误:'1004',我不知道为什么。它与我的&变量有关。如果我设置静态范围