我正在尝试将特定工作表从一个工作簿复制到另一个工作簿,但似乎它不会复制工作表的内容并返回一个空工作表。
第二个问题是,当我复制工作表时,我使用Sheet.Count
在我的工作簿中创建另一个工作表,我粘贴新工作表但它无法正常工作,因为它不会创建一个新工作表而是我的最后一个并重命名然后将其删除。
可能出现什么问题,如何添加错误处理代码?
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
答案 0 :(得分:0)
这里有很多问题,但我们试图解释一些......
我很有可能会像这样接近这个。这很容易修改,以完成工作簿中的所有工作表。
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
答案 1 :(得分:0)
但根据我的理解,这段代码适合我。 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
代替。