繁体   English   中英

如何将两张工作表复制到新工作簿?

[英]How to copy two sheets to a new workbook?

我有一个包含许多工作表的工作簿。 我正在尝试将两张纸一起复制到一个新的工作簿中。

我明白了

类型不匹配的运行时错误 13。

Sub CopyBillStatandCosts()
    Dim MyBook As Workbook
    Dim NewBook As Workbook

    Set MyBook = ThisWorkbook
    Workbooks.Add ' Open a new workbook
    Set NewBook = ActiveWorkbook

    Set MyBook = ActiveWorkbook

    Sheets(11).Copy Before:=Workbooks(NewBook).Sheets(1)
    Sheets(9).Copy Before:=Workbooks(NewBook).Sheets(1)
    Workbooks(NewBook).Sheet1.Delete
End Sub

更新:我想出了代码。 但是,我如何通过代码名称来引用工作表,这是最佳实践? 它们是 sheet9 和 sheet 11。

Sub copyBillStatandCosts()
    ThisWorkbook.Worksheets(Array("BillStat", "C")).Copy
End Sub

你的第二个

Set MyBook = ActiveWorkbook

可能本来就是

MyBook.Activate

虽然这样做的整体更简单的方法是

Sub CopyBillStatandCosts()
    Sheets(Array("BillStat", "Costs")).Copy
End Sub

不带参数的Copy在新工作簿中制作副本。

在一个 Go 中按代码名称复制工作表

Sub copyBillStatandCosts()

    ThisWorkbook.Worksheets(Array(Sheet9.Name, Sheet11.Name)).Copy

    ' To continue to work with the new workbook, do the following:
    Dim NewBook As Workbook: Set NewBook = ActiveWorkbook
    ' e.g.:
    ' NewBook.SaveAs "C:\Test\Test.xlsx", xlOpenXMLWorkbook

    ' To continue to work with each new worksheet, do the following: 
    Dim bws As Worksheet: Set bws = NewBook.Worksheets(1)
    Dim cws As Worksheet: Set cws = NewBook.Worksheets(2)
    ' e.g.:
    MsgBox NewBook.Name & vbLf & bws.Name & vbLf & cws.Name

End Sub
  • 为什么使用代号? 现在您可以重命名选项卡中的两个工作表,代码仍会将正确的工作表复制到新工作簿。
  • 为什么在一个 go 中? 如果工作表相互引用,它们仍将在新工作簿中工作,即不会引用源工作簿中的工作表。

如果您想使用编程名称,则只需使用Name属性:

ThisWorkbook.Sheets(Array(sheet9.Name, sheet11.Name)).Copy

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM