当前位置: 首页 > 知识库问答 >
问题:

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

鲁城
2023-03-14

所以在问这个之前,我搜索并发现了一些与我在这里想要做的相似的事情。

基本上我有工作簿AlphaMaster。这个工作簿是一个模板,我想用它来创建每周的新工作簿。

在本工作簿中,有名为“周一至周六”的工作表,以及带有相应日期的周一、周二等其他工作表。

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

>

  • 将代码保存模板作为新工作簿运行
  • 根据userform1的输入重命名工作簿
  • 用适当的工作日重命名工作簿

    工作簿以一周结束日期命名,6张工作表的日期将在该日期(例如1月5日结束的一周)输入用户表单后重命名为:

    周末:2014年1月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
    
    Applicathtml" target="_blank">ion.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"
    

    新xlsx我想从表格中填写

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

    难题:

    目前,虽然这确实有效,但我无法更改文档的名称,它的名称与我在中的名称相同。另存为区域。我想我需要创建一个备用函数来处理这个问题。其次,当它完成时,我的工作表将按与模板相反的顺序显示。

    如果您能提供一些指导/建议,我们将不胜感激!

  • 共有2个答案

    云炜
    2023-03-14

    我在我的应用程序中使用它,效果很好

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

    复制后,您可以在新的Excel对象中打开它,并对其执行任何操作。

    乐正涵意
    2023-03-14

    这里有几个问题:

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

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

    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,请参阅工作簿。另存为方法(Excel)。

     类似资料:
    • 我使用这段代码将工作簿中的每一张工作表复制到一个新的工作簿中,它工作得很好,但它颠倒了工作表的顺序,是否有任何办法阻止它这样做? 我正在复制所有的工作表,这样我就可以将它保存为不同的文件扩展名,这是我发现唯一有效的方法。

    • 我想将工作簿的一页(包括样式)复制到新的工作簿。 我尝试对所有单元格进行迭代 抛出java.lang.IllegalStateException:超出了单元格样式的最大数目。在.xls工作簿中最多可以定义4000个样式 抛出java.lang.IllegalArgumentException:此样式不属于提供的工作簿。是否尝试将样式从一个工作簿分配到另一个工作簿的单元格? 正确的样式复制方法是什么

    • 所以在COL D中,我必须只粘贴COL A和COL C相等的值,如果这些值不相等,则跳过或粘贴COL D中的任何东西 我写过类似这样的代码,但不幸的是它粘贴了一切!!

    • 2,3和6-12被跳过。下面是我的代码: 我认为这个问题与行“wb1.sheets(1).Range(”a“&Range(”a1“).end(xlDown).row+1)”有关,但我不知道如何解决这个问题。有什么建议吗?谢谢!

    • 试图从当前工作簿“Create Report.xlsm”中复制工作表名称“Headings Explantions”,该工作簿打开到我要求打开的工作簿中,我得到了下标超出范围的错误

    • 我试图将活动工作表和2个指定工作表复制到一个新工作簿,然后让宏继续在新工作簿上运行,以便在保存它之前更改一些内容 null