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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Excel:将工作簿复制到新工作簿相关的知识,希望对你有一定的参考价值。

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

基本上我有工作簿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 "blahblahblahNew.xlsx"

new.xlsx我想从表单中填写

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

并发症:

目前,虽然这确实有效,但我无法更改文件的名称,其命名为.saveAs区域中的名称。我想我需要创建一个替代函数来处理这个问题。其次,当它完成时,我的纸张以与模板相反的顺序显示。

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

答案

这里有几个问题:

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

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

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)

另一答案

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

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

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

以上是关于Excel:将工作簿复制到新工作簿的主要内容,如果未能解决你的问题,请参考以下文章

Excel 宏不会将工作表复制到新工作簿

VBA 如何批量将单元格复制到另一个工作表中

将工作表复制并保存到新工作簿

将当前工作簿中的所有工作表复制到新工作簿,但第一张工作表除外

将范围复制到新的工作簿 FileDialog 提示不起作用

Excel工作表:将数据从一个工作簿复制到另一个工作簿