如何将工作表复制到新的未创建的工作簿?

时间:2011-08-04 12:59:36

标签: excel vba excel-vba

这是一个非常愚蠢的问题,但我在书中找不到答案,而且在工作中我没有互联网。 我想要做的是将活动工作表中的工作表保存到新文件中。我尝试这样做,但显然你不能直接将工作表分配给未创建的工作簿。

Public Sub SaveRaport() 
Dim ws As Worksheet 
Set ws = Worksheets("Raport") 
Dim wb As Workbook 
wb = ws 'here's the problem… I don't know how to do this thing 
Dim TempFilePath, TempFileName, FileExtStr, adrmail As String

wb.Save 
TempFilePath = "C:\Users\ionadr\Desktop\test" & "\" 
TempFileName = "Raportare" & " " & Format(data, "dd-mmm-yy ") & " schimbul " & schimb 
FileExtStr = "." & LCase(Right(wb.Name, Len(wb.Name) - InStrRev(wb.Name, ".", , 1))) 
    MsgBox ("Saving file...") 
    wb.SaveCopyAs TempFilePath & TempFileName & FileExtStr 
End Sub

感谢您的帮助!感谢

3 个答案:

答案 0 :(得分:1)

如果您只是想保存工作表“Raport”而不是其他任何内容,那么这些内容就会让您开始:

Sub Report()

    Dim ws As Worksheet
    Set ws = Worksheets("Raport")

    ws.Copy
    ActiveWorkbook.SaveAs "NewCopy.xlsx"

End Sub

显然,你必须修改文件名以满足你的需要。如果您还不想保存新副本,单独调用ws.Copy将创建一个新工作簿,其中包含“Raport”电子表格中的数据(根据我的经验 - 也只是在一分钟之前测试过代码)。

希望这有帮助。

答案 1 :(得分:1)

您的wb = ws必须抛出错误。您正在尝试将两个对象设置为彼此相同的不同类型(不可能)。

Dim newWB As Workbook
Dim originalWorkbook As Workbook 'declare a variable of the workbook type (still an uncreated file)
Set newWB = Workbooks.Add() 'create your new file
Set originalWorkbook = ThisWorkbook
originalWorkbook.Sheets(2).Copy after:=newWB.Sheets(1) 'replace the sheet indicies I used with whatever yours are or with strings...

然后您可以使用saveas方法保存工作簿 newWB.SaveAs()

答案 2 :(得分:0)

这是您需要的代码,我几乎一直都在使用。假设您要将名为“Report”的工作表导出为C:\ Report.xlsx

Sub ExportSummary()

Dim WsToExport As Worksheet
Set WsToExport = Sheets("Report")
Dim CurrentWbk As Workbook
Dim NewWbk As Workbook

Set CurrentWbk = ActiveWorkbook

Workbooks.Add
Set NewWbk = ActiveWorkbook

CurrentWbk.Activate
WsToExport.Select
WsToExport.Copy Before:=NewWbk.Sheets(1)

NewWbk.Activate
NewWbk.SaveAs "C:\Report.xlsx"
NewWbk.Close

End Sub