在Office辦公軟體中,我們可以通過VBA自動化進行各種操作,比如複製工作表。VBA複製工作表是一個非常常見的操作,下面我們從多個方面來詳細介紹。
一、VBA複製工作表並重命名
在Excel中,我們可以通過以下代碼來複制工作表並重命名:
Sub CopyAndRenameSheet()
Sheets("Sheet1").Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "NewSheetName"
End Sub
以上代碼會複製名為Sheet1的工作表,並在其後插入一個新的工作表,然後將新工作表的名稱改為NewSheetName。
二、VBA複製工作表被禁用
有時候我們可能會發現,在某些Excel文件中,複製工作表的功能被禁用了。這時我們可以通過以下方式來打開複製工作表的功能:
Sub EnableCopySheet()
Application.CommandBars("Worksheet Menu Bar").Controls("Move or Copy Sheet...").Enabled = True
End Sub
以上代碼會打開工作表右鍵菜單中的「移動或複製工作表」功能。
三、VBA複製工作表並命名
我們也可以在複製工作表時直接為其命名:
Sub CopyAndNameSheet()
Sheets("Sheet1").Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "NewSheetName"
End Sub
以上代碼會複製名為Sheet1的工作表,並在其後插入一個新的工作表,然後將新工作表的名稱改為NewSheetName。
四、VBA複製工作表Copy 用法
我們還可以使用Copy方法來複制工作表:
Sub CopySheet()
Sheets("Sheet1").Copy
End Sub
以上代碼會複製名為Sheet1的工作表,並將其複製到同一工作簿中,但是新工作表會自動命名。
五、VBA複製工作表到另一個工作簿
除了在同一工作簿中複製工作表,我們還可以將工作表複製到另一個工作簿中:
Sub CopySheetToAnotherWorkBook()
Dim newBook As Workbook
Set newBook = Workbooks.Add
ThisWorkbook.Sheets("Sheet1").Copy Before:=newBook.Sheets(1)
End Sub
以上代碼會創建一個新的工作簿,然後將名為Sheet1的工作表複製到新工作簿中的第一個工作表之前。
六、VBA複製工作表到新建工作簿
如果想把整個工作表複製到新建的工作簿中,可以使用以下代碼:
Sub CopySheetToNewWorkbook()
Sheets("Sheet1").Copy
ActiveWorkbook.SaveAs FileName:="NewWorkbook.xlsx"
ActiveWorkbook.Close
End Sub
以上代碼會複製名為Sheet1的工作表並將其複製到新建的工作簿中,然後將新工作簿保存為NewWorkbook.xlsx並關閉它。
七、VBA複製工作表另存新文件
我們還可以將複製的工作表另存為一個新文件:
Sub SaveCopiedSheetAsNewFile()
Sheets("Sheet1").Copy
ActiveWorkbook.SaveAs FileName:="CopiedSheet.xlsx"
ActiveWorkbook.Close
End Sub
以上代碼會複製名為Sheet1的工作表並將其複製到新建的工作簿中,然後將新工作簿保存為CopiedSheet.xlsx並關閉它。
八、VBA複製工作表保存至新工作表
如果我們想將複製的工作表保存為另一個工作簿的工作表,可以使用以下代碼:
Sub SaveCopiedSheetToNewSheet()
Sheets("Sheet1").Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
Dim newSheet As Worksheet
Set newSheet = ActiveSheet
newSheet.Name = "NewSheetName"
End Sub
以上代碼會複製名為Sheet1的工作表並將其複製到當前工作簿的末尾。然後我們創建了一個新的工作表並將其命名為NewSheetName。
九、VBA複製工作表到新工作簿並保存
最後,如果我們想將整個工作表複製到新建的工作簿中並保存該工作簿,可以使用以下代碼:
Sub CopySheetToNewWorkbookAndSave()
Sheets("Sheet1").Copy
ActiveWorkbook.SaveAs FileName:="NewWorkbook.xlsx"
ActiveWorkbook.Close
End Sub
以上代碼會複製名為Sheet1的工作表並將其複製到新建的工作簿中,然後將新工作簿保存為NewWorkbook.xlsx並關閉它。
十、VBA如何批量複製工作表
有時候我們需要批量複製多個工作表,以下是一段代碼可以實現這一功能:
Sub BatchCopySheets()
Dim totalSheets As Integer, i As Integer
totalSheets = ThisWorkbook.Sheets.Count
For i = totalSheets To 1 Step -1
ThisWorkbook.Sheets(i).Copy Before:=ThisWorkbook.Sheets(1)
ActiveSheet.Name = "Copy of " & ThisWorkbook.Sheets(i).Name
Next i
End Sub
以上代碼會在當前工作簿的第一個工作表前面複製當前工作簿中所有的工作表,並在每個新工作表的前綴中添加「Copy of」字元串。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/241326.html