Excel vba如何复制所有格式和页面设置的工作表
我已经看到了很多例子来制作一个工作表的完整副本,但是他们都没有为我工作。 在我的情况下,工作表必须进入一个新的工作簿。 在我的实际代码中,wb是全局定义的,工作簿是在另一个叫做这个的子类中创build的。
Dim wb As Workbook Set wb = Workbooks.Add() Dim newtab as Worksheet With ActiveWorkbook .Sheets("Sample Attendance").Copy After:=wb.Sheets(.Sheets.Count) Set newtab = wb.Sheets(wb.Sheets.Count - 1) End With
没有工作。
同样
ActiveWorkbook.Sheets("Sample Attendance").Copy After:=wb.Sheets(1) Set newtab = wb.Sheets("Sample Attendance") newtab.Name = tabname
这两个方法都在Copy语句之后返回。
我已经适度地成功了:
Set newtab = wb.Worksheets.Add newtab.Name = tabname Set Attendance = ThisWorkbook.Sheets("Sample Attendance") Attendance.Range("A:BB").Copy Destination:=newtab.Cells(1, 1)
哪个工作。 但是接下来我必须复制所有的PageSetup,这是给我适合并永远占用的。
我看到你的第一段代码有两个问题…
-
您正在使用
Activeworkbook
。 当您添加一个新的工作簿时,新的工作簿将成为您的活动工作簿:) -
第二个问题是
wb.Sheets(.Sheets.Count)
之前的DOT。 为什么要从正在复制的工作簿中select计数?
尝试这个
Sub Sample() Dim thiswb As Workbook, wb As Workbook Dim newtab As Worksheet Set thiswb = ThisWorkbook Set wb = Workbooks.Add() With thiswb .Sheets("Sample Attendance").Copy After:=wb.Sheets(wb.Sheets.Count) Set newtab = wb.Sheets(wb.Sheets.Count - 1) End With End Sub
给这个镜头:
Sub SheetCopier() Dim OriginalWB As Workbook Dim NewWB As Workbook Set OriginalWB = ActiveWorkbook Workbooks.Add Set NewWB = ActiveWorkbook OriginalWB.Sheets("qwerty").Copy Before:=NewWB.Sheets(1) End Sub