簡體   English   中英

Excel:將工作簿復制到新工作簿

[英]Excel: Copy workbook to new workbook

因此,在提出此要求之前,我進行了搜索,發現了一些與我在這里想要做的事情類似的事情。

基本上我有工作簿AlphaMaster。 該工作簿是我想用來每周創建新工作簿的模板。

在此工作簿中,有名為:星期一至星期六的工作表,以及帶有星期一,星期二等的相應日期的其他工作表。

我創建了一個在工作簿打開時加載的表單。 我想要的是當我單擊窗體運行時它將:

  • 將代碼保存模板運行為新工作簿
  • 根據userform1的輸入重命名工作簿
  • 重命名工作簿與適當的工作日

    工作簿以一個星期結束日期命名,該日期以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區域中命名的文檔。 我在想我需要創建一個替代函數來處理此問題。 第二,完成后,我的工作表將以模板的相反順序顯示。

有關從這里出發的一些指導/建議將不勝感激!

這里有幾個問題:

您不能刪除工作簿中的所有工作表。

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方法(Excel)

我在應用程序中使用了它,效果很好

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

復制完成后,您可以在新的Excel對象中打開它,並隨心所欲地對其進行操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM