我一直收到此错误消息,但只是第一次运行我的vba代码。如果我在错误后再次运行它,它可以工作。 根据我从第一个答案中理解的内容编辑此代码 非常感谢任何帮助。
新代码
Sheets("Sheet1").Copy
Dim wb As Workbook
Set wb = ActiveWorkbook.Sheets("Sheet1").Add
'this creates the "Save as". Change sheets as to your sheet. The new
'workbook is now the active one
strFileName = "C:\Users\" & Sheets("Sheet1").Name & ".xls"
ActiveWorkbook.SaveAs Filename:=Range("B4").Value & Range("E6").Value & " vs " _
& Range("E7").Value & " - " & Format(Date, "dd-mm-yyyy")
wb.Close
有问题的原始代码:
strFileName = "C:\Users\" & Sheets("Sheet1").Name & ".xls"
If strFileName = "False" Then Exit Sub
ActiveWorkbook.SaveAs Filename:=Range("B4").Value & Range("E6").Value & " vs " _
& Range("E7").Value & " - " & Format(Date, "dd-mm-yyyy")
ActiveWorkbook.Close0
答案 0 :(得分:1)
工作簿对象没有Appengine
。
这一行:
.Close0
应该是:
ActiveWorkbook.Close0
注意:
您可以选择使用ActiveWorkbook.Close
或ActiveWorkbook.Close SaveChanges:=True
如果您一次打开多个工作簿,则使用ActiveWorkbook.Close SaveChanges:=False
可能会关闭与预期不同的工作簿。通常最好使用以下之一:
ActiveWorkbook.Close
- 如果正在关闭的工作簿是持有代码的工作簿ThisWorkbook.Close
- 如果您没有将工作簿作为变量 AND ,则关闭的工作簿不是带代码的工作簿。但是,不建议使用此方法,因为它涉及将工作簿名称硬编码到代码中。如果名称发生变化,这可能会导致代码中断。Workbooks("Name").Close
- 其中wbk.Close
是引用/保存您要关闭的工作簿的工作簿对象此
wbk
或
Dim wkb as Workbook
Set wkb = Workbooks("Name")
此
Dim wkb as Workbook
Set wkb = Workbooks.Open("FileName")
或
Dim wkb as Workbook
Set wkb = Workbooks.Add
修改强>
意识到您可能尝试使用' Although the previous method is preferred
Dim wkb as Workbook
Workbooks.Add
Set wkb = ActiveWorkbook
为ActiveWorkbook.Close 0
指出True/False
,但最好使用SaveChanges
代替True/False
等等。
答案 1 :(得分:0)
你想用这个做什么? Error: Invalid target model for scope `Customer.prototype.accessTokens`
? Set wb = ActiveWorkbook.Sheets("Sheet1").Add
对象没有Sheet
方法。这是438错误。
要在运行时创建新工作簿,可以使用Add
方法
Workbooks.Add
要从现有工作表创建新工作簿,因为您可能正在尝试这样做,但有几次可以使用Set wb = Workbooks.Add
:
ActiveWorkbook
注意:除非您在工作表1中存在用于派生Dim ws as Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
ws.Copy ' If Destination isn't specified, this creates a new workbook
Dim wb As Workbook
Set wb = ActiveWorkbook ' The newly created workbook is Active now
strFileName = "C:\Users\" & ws.Name & ".xls" '<~~ this variable is never used, it doesn't do anything. You may want to remove it to avoid ambiguity.
wb.SaveAs Filename:=Range("B4").Value & Range("E6").Value & " vs " _
& Range("E7").Value & " - " & Format(Date, "dd-mm-yyyy")
wb.Close
的值,否则可能会导致错误或另存为其他意外文件名。建议您始终完全限定范围对象,否则Excel默认假定它们位于运行时处于活动状态的任何工作表上。