簡體   English   中英

Excel VBA如何使用所有格式和頁面設置復制工作表

[英]Excel vba how to copy sheet with all formatting & page setup

我已經看到了很多制作完整工作表副本的示例,但沒有一個對我有用。 就我而言,工作表必須放入新的工作簿中。 在我的實際代碼中,wb是全局定義的,而工作簿是在另一個名為this的子目錄中創建的。

  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,這使我很滿意,而且需要花很長時間。

我看到您的第一段代碼有兩個問題...

  1. 您正在使用Activeworkbook 當您添加新工作簿時,新工作簿將成為您的活動工作簿:)

  2. 第二個問題是前DOT .Sheets.Countwb.Sheets(.Sheets.Count) 為什么從要復制的工作簿中選擇計數?

嘗試這個

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM