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

问题描述 投票:0回答:2

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

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

在这个工作簿中有一些名为:周一至周六的表格以及其他表格,其中包含Mon,Tues等的相应日期。

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

  • 将代码保存模板作为新工作簿运行
  • 根据userform1的输入重命名工作簿
  • 使用适当的工作日重命名工作簿 工作簿以一周的结束日期命名,在此之后将重命名的6个工作日(例如,截至1月5日的示例周)放入用户表单中:

周末:1月5日至2014年日期星期一: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区域中的名称。我想我需要创建一个替代函数来处理这个问题。其次,当它完成时,我的纸张以与模板相反的顺序显示。

关于从这里去哪里的一些指导/建议将不胜感激!

excel vba excel-vba save
2个回答
1
投票

这里有几个问题:

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

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

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)


0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.