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

这是一个非常愚蠢的问题,但我没有find答案在我有工作,我没有互联网。 我想要做的是将工作表从activeworkbook保存到一个新的文件。 我试图这样做,但显然你不能直接分配一个工作表到一个未创build的工作簿。

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 

我感谢您的帮助! 谢谢

如果你只是想保存工作表“Raport”而没有其他的东西,那么沿着这些线将会让你开始:

 Sub Report() Dim ws As Worksheet Set ws = Worksheets("Raport") ws.Copy ActiveWorkbook.SaveAs "NewCopy.xlsx" End Sub 

显然,你将不得不修改文件名以适应你的需要。 如果你不想保存新的副本,单独调用ws.Copy将会在“Raport”电子表格中创build一个带有数据的新工作簿(根据我的经验 – 刚刚testing了代码)。

希望这可以帮助。

你的wb = ws必须抛出错误。 你正在试图设置两个对象相等,彼此是不同的types(不可能)。

 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()保存工作簿

这里是你需要的,几乎所有的时间都使用的代码。 假设您想要将名为“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