将工作表复制到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
这里有很多问题,但生病试图解释一些….
- 不要复制和粘贴。 你thisCell.Value = ThatCell.Value代替。
- 引用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
。