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:将工作簿复制到新工作簿的主要内容,如果未能解决你的问题,请参考以下文章