繁体   English   中英

Excel:将工作簿复制到新工作簿

[英]Excel: Copy workbook to new workbook

因此,在提出此要求之前,我进行了搜索,发现了一些与我在这里想要做的事情类似的事情。

基本上我有工作簿AlphaMaster。 该工作簿是我想用来每周创建新工作簿的模板。

在此工作簿中,有名为:星期一至星期六的工作表,以及带有星期一,星期二等的相应日期的其他工作表。

我创建了一个在工作簿打开时加载的表单。 我想要的是当我单击窗体运行时它将:

  • 将代码保存模板运行为新工作簿
  • 根据userform1的输入重命名工作簿
  • 重命名工作簿与适当的工作日

    工作簿以一个星期结束日期命名,该日期以6个工作表的日期(在1月5日结束的示例星期)放入用户表单后将重命名为:

周末:2014年5月5日;日期:12月30日星期二:12月31日星期二:1月1日星期四:1月2日星期五:1月3日星期六:1月4日

比单击命令。 到目前为止,这就是我所拥有的:

 Private Sub CommandButton1_Click()
Dim thisWb As Workbook, wbTemp As Workbook
Dim ws As Worksheet

On Error GoTo dummkopf

Application.DisplayAlerts = False

Set thisWb = ThisWorkbook
Set wbTemp = Workbooks.Add

On Error Resume Next
For Each ws In wbTemp.Worksheets
    ws.Delete
Next
On Error GoTo 0

For Each ws In thisWb.Sheets
    ws.Copy After:=wbTemp.Sheets(1)
Next

wbTemp.Sheets(1).Delete
wbTemp.SaveAs "blahblahblah\New.xlsx"

new.xlsx我想从表格中填写

Vorfahren:
Application.DisplayAlerts = True
Exit Sub
Whoa:
MsgBox Err.Description
Resume Vorfahren
End Sub

并发症:

目前,尽管这样做确实可行,但我无法更改文档的名称,即我在.saveAs区域中命名的文档。 我在想我需要创建一个替代函数来处理此问题。 第二,完成后,我的工作表将以模板的相反顺序显示。

有关从这里出发的一些指导/建议将不胜感激!

这里有几个问题:

您不能删除工作簿中的所有工作表。

WorksheetDeleteError

您应该将工作表复制到末尾以保留顺序(如果源工作簿中的工作表已排序):

For Each ws In thisWb.Sheets
    ws.Copy After:=wbTemp.Sheets(wbTemp.Sheets.Count)
    wbTemp.Sheets(wbTemp.Sheets.Count).Name = "NewSheetName" ' <-- Rename the copied sheet here
Next

如果您的源工作表没有名称“ Sheet#”,请随后删除默认工作表。

Application.DisplayAlerts = False
For Each ws In wbTemp.Sheets
    If Instr(1, ws.Name, "Sheet", vbTextCompare) > 0 Then ws.Delete
Next
Application.DisplayAlerts = True

有关SaveAs,请参阅Workbook.SaveAs方法(Excel)

我在应用程序中使用了它,效果很好

Set bFso = CreateObject("Scripting.FileSystemObject")
bFso.CopyFile ThisWorkbook.FullName, destinationFile, True     

复制完成后,您可以在新的Excel对象中打开它,并随心所欲地对其进行操作。

暂无
暂无

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

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