[英]Excel: Copy workbook to new workbook
因此,在提出此要求之前,我進行了搜索,發現了一些與我在這里想要做的事情類似的事情。
基本上我有工作簿AlphaMaster。 該工作簿是我想用來每周創建新工作簿的模板。
在此工作簿中,有名為:星期一至星期六的工作表,以及帶有星期一,星期二等的相應日期的其他工作表。
我創建了一個在工作簿打開時加載的表單。 我想要的是當我單擊窗體運行時它將:
重命名工作簿與適當的工作日
工作簿以一個星期結束日期命名,該日期以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區域中命名的文檔。 我在想我需要創建一個替代函數來處理此問題。 第二,完成后,我的工作表將以模板的相反順序顯示。
有關從這里出發的一些指導/建議將不勝感激!
這里有幾個問題:
您不能刪除工作簿中的所有工作表。
您應該將工作表復制到末尾以保留順序(如果源工作簿中的工作表已排序):
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.