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