首页 文章

从一个工作簿复制工作表并保存在新工作簿中,其名称是单元格中的值

提问于
浏览
0

我想从Workbook1复制Sheet2并将其粘贴到新工作簿的Sheet1中,并将新工作簿保存为Sheet2,工作簿1中单元格A1的值 . 我希望在单击我添加的按钮时触发此宏 .

这是我到目前为止所做的,但它创建了两个工作簿 - 一个具有正确的名称,但没有Sheet2,Workbook1的内容 - 另一个具有Sheet2,Workbook1但没有正确的工作簿名称的内容

Sub CreateWorkbook()

Dim n As String
n = ThisWorkbook.Path & "\" & Range("A1").Value & ".xls"
Workbooks.Add
ActiveWorkbook.SaveAs n
ThisWorkbook.Sheets("Sheet2").Copy
ActiveWorkbook.Sheets("Sheet1").PasteSpecial xlPasteValues

End Sub

我在这里错过了什么?

1 回答

  • 2

    我不认为 Workbooks.Add 创建的新工作簿默认为 ActiveWorkbook .

    使用 ThisWorkbookActiveWorkbook 会让人感到困惑 .

    我喜欢将工作簿和工作表之类的东西设置为变量,这样你就知道你在处理什么:)

    我无法让 Copy 然后 PasteSpecial 位工作(虽然我没有尝试那么难) .

    下面的例子可以做你想要的 . 我使用 Sheet2!A1 作为文件名,不知道你的代码示例中的 AK545 是什么 .

    Sub Example()
    Dim Output As Workbook
    Dim FileName As String
    
    Set Output = Workbooks.Add
    FileName = ThisWorkbook.Path & "\" & ThisWorkbook.Worksheets(2).Cells(1, 1).Value & ".xls"
    
    Output.SaveAs FileName
    
    Application.DisplayAlerts = False
    
    Output.Worksheets("Sheet1").Delete
    ThisWorkbook.Worksheets(2).Copy Before:=Output.Worksheets("Sheet2")
    Output.Worksheets(1).Name = "Sheet1"
    
    Application.DisplayAlerts = True
    
    Output.Save
    
    End Sub
    

相关问题