如何使用vba复制和移动工作表?
您可以使用 VBA 代码在 Excel 中复制和移动工作表,在本教程中我们将学习不同的方法来执行此操作。
复制同一工作簿中的工作表
如果要复制同一工作簿中的工作表,可以在使用复制方法的地方使用以下代码。
Sheets("Sheet5").Copy Before:=Sheets(1)
在此代码中,sheet1 是工作簿的第一个工作表,当您运行此代码时,它会复制工作簿的第一个工作表之前名为“Sheet5”的工作表。
如果你想在第一张纸之后复制它,代码如下。
Sheets("Sheet5").Copy After:=Sheets(1)
如果你想在第一张纸之后复制它,代码如下。
Sheets("Sheet5").Copy Before:=Sheets("Sheet3") Sheets("Sheet5").Copy After:=Sheets("Sheet3")
当您运行此 VBA 代码时,它会复制“Sheet3”之前和之后的“Sheet5”。
使用以下代码行,您可以复制工作簿最后一张工作表之后的工作表。它使用sheet.count来获取工作表的数量,然后使用计数来复制最后的工作表。
Sheets("myNewSheet").Move After:=Sheets(Sheets.Count)
有用的链接:运行宏–宏记录器– Visual Basic 编辑器–个人宏手册
使用新名称复制同一工作簿中的工作表
如果你想复制一个工作表然后立即重命名它,你需要使用 name 属性,就像下面的代码一样。
Sheets("Sheet5").Move Before:=Sheets(1) ActiveSheet.Name = "myNewSheet"
在同一工作簿中移动工作表
要移动同一工作簿中的工作表,您需要使用 move 方法,如以下代码所示。
Sheets("Sheet5").Move After:=Sheets(1)
此代码会将“Sheet5”移到“Sheet2”之前,如上面的快照所示。
将工作表复制到新工作簿
当您使用复制方法而不在当前工作簿中定义工作表时,VBA 将打开一个新工作簿并将该工作表复制到该工作簿中。
Sheets("Sheet5").Copy
并将工作表移至新工作簿。
Sheets("Sheet5").Move
将多张工作表复制到新工作簿
如果您想一次向新工作簿添加多个工作表,请使用如下代码。
Sheets(Array("Sheet2", "Sheet3", "Sheet4", "Sheet5")).Copy
上面的代码创建了一个工作表数组,然后将它们全部复制到一个新的工作簿中。
将工作表复制到另一个工作簿
如果要将工作表复制到另一个已打开的工作簿,您可以在参数之后或之前提及工作簿名称。
Sheets("Sheet1").Copy Before:=Workbooks("Book1.xlsx").Sheets(1)
上面的代码从活动工作簿复制 Sheet1 并将其添加到已打开的 Book1.xlsx 的第一张工作表之前。
如果你想移动它。
Sheets("Sheet1").Move Before:=Workbooks("Book1.xlsx").Sheets(1)
将工作表复制到关闭的工作簿
有一种方法可以将工作表复制到关闭的工作簿中,而无需打开它。看下面的代码。
Sub vba_copy_sheet() Dim mybook As Workbook Application.ScreenUpdating = False Set mybook = _ Workbooks.Open _ ("C:UsersDellDesktopsamplefile.xlsx") Workbooks("Book1.xlsx").Sheets("Sheet2").Copy Before:=mybook.Sheets(1) mybook.Close SaveChanges:=True Application.ScreenUpdating = True End Sub
在此代码中,您拥有 myBook 变量,然后为其分配了一个工作簿。我们已禁用屏幕更新,以便代码可以在后端执行任务。
从另一个工作簿复制工作表而不打开它
以同样的方式,您可以从关闭的工作簿中复制和移动工作表。看下面的代码。
Sub vba_copy_sheet() Dim mybook As Workbook Application.ScreenUpdating = False Set mybook = _ Workbooks.Open _ ("C:UsersDellDesktopsamplefile.xlsx") mybook.Sheets("mySheet").Copy Before:=Workbooks("Book1.xlsx").Sheets(1) mybook.Close SaveChanges:=True Application.ScreenUpdating = True End Sub