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

时间:2013-12-31 00:30:44

标签: excel vba excel-vba save

所以在问这个之前我搜索并找到了类似于我在这里要做的事情。

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

在这个工作簿中有一些名为:周一至周六的表格和附加表格,其中包含周一,周二等的相应日期。

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

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

    工作簿以星期结束日期的名称命名为6张将在此之后重命名的日期(例如,截止日期为1月5日的一周)将其放入用户表单中:

WeekEnd:Jan-5-2014 日期 周一:12月30日 周二:12月31日 威尔:1月1日 周四:Jan.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区域中的名称。我想我需要创建一个替代函数来处理这个问题。其次,完成后,我的工作表将按照与模板相反的顺序显示。

非常感谢有关从哪里开始的一些指导/建议!

2 个答案:

答案 0 :(得分:1)

这里有几个问题:

您无法删除工作簿中的所有工作表。

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 Method (Excel)

答案 1 :(得分:0)

我在我的应用程序中使用它并且运行良好

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

复制完成后,您可以在新的Excel对象中打开它,随意使用它。