运行时错误''' - 仅有时

时间:2018-05-15 12:55:48

标签: excel vba excel-vba runtime-error

我一直收到此错误消息,但只是第一次运行我的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

2 个答案:

答案 0 :(得分:1)

工作簿对象没有Appengine

这一行:

.Close0

应该是:

ActiveWorkbook.Close0

注意:

  • 您可以选择使用ActiveWorkbook.Close ActiveWorkbook.Close SaveChanges:=True

  • 指定是否要保存更改
  • 如果您一次打开多个工作簿,则使用ActiveWorkbook.Close SaveChanges:=False可能会关闭与预期不同的工作簿。通常最好使用以下之一:

    1. ActiveWorkbook.Close - 如果正在关闭的工作簿是持有代码的工作簿
    2. ThisWorkbook.Close - 如果您没有将工作簿作为变量 AND ,则关闭的工作簿不是带代码的工作簿。但是,不建议使用此方法,因为它涉及将工作簿名称硬编码到代码中。如果名称发生变化,这可能会导致代码中断。
    3. 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默认假定它们位于运行时处于活动状态的任何工作表上。