将工作表复制到VBA中的其他工作簿不会复制

我试图从一个工作簿复制到另一个特定工作表,但它似乎不复制工作表的内容并返回一个空的。

第二个问题是,当我复制工作表时,我使用Sheet.Count在我的工作簿中创build另一个工作表粘贴新工作表,但它不能正常工作,因为它不会创build一个新的,而是采取我的最后一个,并重命名它然后删除它。

有什么可能是错的,我该如何添加error handling代码?

 Sheets(filesheet).COPY After:=ThisWorkbook.Sheets(Sheets.Count) 'Application.AskToUpdateLinks = False wb.Close savechanges:=False 'naming of the copied sheet ActiveWorkbook.Sheets(Sheets.Count).Name = "Imported data" 'copy the material as values to sourcing template sheet Sheets("Imported data").Cells.COPY Sheets("Sourcing template").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'delete the imported copied sheet (named ranges etc, to avoid file size growing too much) Sheets("Imported data").Delete 

这里有很多问题,但生病试图解释一些….

  1. 不要复制和粘贴。 你thisCell.Value = ThatCell.Value代替。
  2. 引用Active(无论)将最终导致不良结果。 键入更多的内容似乎是一个痛点,但明确地说明了什么是工作簿/表单/您打算引用的内容将在未来解决很多挫折。

这很可能是我如何处理这个问题。 这很容易修改,以做工作簿中的所有工作表。

 Dim sheetCopy as variant dim sheet as Worksheet dim rowC as long dim colC as long set sheet = ThisWorkBook.Sheets("Imported Data") rowC = sheet.UsedRange.Rows.Count colC = sheet.UsedRange.Columns.Count sheetCopy = sheet.UsedRange ThisWorkBook.Sheets("Sourcing template").Range(ThisWorkBook.Sheets("Sourcing template").Cells(1,1), ThisWorkBook.Sheets("Sourcing template").Cells(rowC,colC).Value2 = sheetCopy sheet.Delete 

坦率地说,我不完全明白你的问题。

但基于我的理解,这个代码适合我。 Sheets(filesheet)中的文件Sheets(filesheet)对我来说是没有意义的,所以我将它改为"Sheet1" 。 您可以更改它的确切工作表名称。

 Sub test() Sheets("Sheet1").Copy After:=ThisWorkbook.Sheets(Sheets.Count) ActiveWorkbook.Sheets(Sheets.Count).Name = "Imported Data" Sheets("Imported data").Cells.Copy Sheets("Sourcing template").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Imported data").Delete End Sub 

代码将Sheet1的所有内容复制到新工作表,并将新工作表名称更改为“导入数据”。

然后,复制“导入的数据”中的所有单元格,并仅将值粘贴到“采购模板”。 因此,只有值将显示在“采购模板”(任何图表或表格将被忽略)。

如果您希望粘贴包括格式的所有内容,则应该使用Activesheets.Paste