根据标准将不同工作簿中的模板复制到多个工作表上的特定单元格中

我正在努力编写一个代码复制粘贴模板从一个单独的工作簿到特定的单元格。 复制的模板根据文本条件而有所不同,该文本条件位于模板应复制到的每个工作表的单元格A4中。

  1. 浏览Summary Workbook上的每个表单。
  2. 在每个工作表中,单元格A4中都有一个指向模板的特定文本
  3. 打开具有多个模板工作表的模板工作簿。 复制与摘要工作表工作表单元格A4中的文本对应的模板
  4. 返回到摘要工作簿上的工作表并将模板粘贴到单元格F14向前。 (所以我在这里必须指定需要粘贴的整个单元格区域,或者在粘贴之前引用它应该单击的单元格就可以了)
  5. 重复摘要工作簿中的所有工作表

下面是我所做的尝试,我得到错误“应用程序定义或反对定义的错误”我已经突出显示在下面的代码中触发错误的行。 我认为这是因为我没有正确地调用模板书页。 另外,如果我必须指定要复制和粘贴的单元格的确切范围,则不需要,因为通常情况下,如果您复制整个工作表,则只能将其作为整个工作表进行粘贴,而不能从特定的单元格点进行粘贴。

感谢您的任何帮助!

Sub PASTE() Dim wb1 As Workbook Dim Sht As Worksheet Dim Rng, Rng2 As Range Dim cell As Range Dim ws As Worksheet Set wb1 = ThisWorkbook Set Sht = wb1.Worksheets("Summary") Set Rng = Sht.Range("A6:A" & Sht.Cells(Sht.Rows.Count, "A").End(xlUp).Row) Dim TemplateBook As Workbook Set TemplateBook = Workbooks.Open(Filename:="C:\Users\VBA-NOOB\Desktop\EVERY Colour.xlsx") DoEvents For Each cell In Rng Set ws = wb1.Sheets(cell.Text) Select Case ws.Range("A4").Value Case "Red & Green T" ws.Range("F14").Value = TemplateBook.Sheets("Red & Green") '<--- is causing the error End Select Next cell End Sub 

从模板中指定您想要复制的范围,如下所示:

  Select Case ws.Range("A4").Value Case "Red & Green T" TemplateBook.Sheets("Red & Green").Range("F14:Z100").Copy ws.Activate Range("F14").Select ActiveSheet.PASTE End Select 

只是猜测。 你可以这样试试吗?

 Option Explicit Sub PASTE() Dim wb1 As Workbook Dim Sht As Worksheet Dim Rng As Range Dim Rng2 As Range Dim cell As Range Dim ws As Worksheet Dim TemplateBook As Workbook Dim rng3 As Range Set wb1 = ThisWorkbook Set Sht = wb1.Worksheets("Summary") Set Rng = Sht.Range("A6:A" & Sht.Cells(Sht.Rows.Count, "A").End(xlUp).Row) Set TemplateBook = Workbooks.Open(Filename:="C:\Users\VBA-NOOB\Desktop\EVERY Colour.xlsx") DoEvents For Each cell In Rng Set ws = wb1.Sheets(cell.Text) Select Case ws.Range("A4").Value Case "Red & Green T" ws.Range("F14") = TemplateBook.Sheets("Red & Green").Range("F14") '<--- is causing the error End Select Next cell End Sub 

我改变了这里:

 ws.Range("F14") = TemplateBook.Sheets("Red & Green").Range("F14") 

在你的情况下,你分配一个工作表范围。 这是不可能的。

  ws.Range("F14").Value = TemplateBook.Sheets("Red & Green") '<--- is causing the error 

在这一行中,您使用了两种不同types的对象。 您试图说,单元格F14的值是整个工作表Red & Green – 不只是Red & Green的单元格,而是工作表对象。 这就是为什么你会得到这个错误。

但是,我还不清楚你想要做什么,是想把模板表的所有内容粘贴到基本单元格(F14)开始的目标工作表中? 如果是这样,你可以做这样的事情:

 ws.range("F14").value = TemplateBook.sheets("Red & Green").Range("A1").value 

…或类似的,指定源范围的大小,而不是尝试使用“所有单元格”。