运行时错误“424”:Object尝试更改对象的定义,Excel VBA时需要

现在我已经写了代码在原始文件所在的文件夹中创build文件的位置。创build文件之后,我想要将它定义为刚刚创build的文件wbBK2。 我想通过使用相同的代码来创build文件,减去SaveAs选项将工作,但似乎它不喜欢的对象。

有什么原因吗? 对于所有预期的目的,它应该直接指向文件,但似乎不同意…有人可以看到我犯的错误吗?

Option Explicit Sub OpenOrderReportExport() Dim wsJL As Worksheet 'Jobs List Dim wsPOT As Worksheet 'PO Tracking Dim wsTNO As Worksheet 'Tel-Nexx OOR Dim wbBK2 As Workbook 'New Workbook Dim wsWS1 As Worksheet 'Sheet1 Dim wsWS2 As Worksheet 'Sheet2 Dim wsWS3 As Worksheet 'Sheet3 Dim CurrentFile As String, NewFileType As String, NewFile As String, Dir As String Set wsJL = Sheets("Jobs List") 'Jobs List Set wsPOT = Sheets("PO Tracking") 'PO Tracking Set wsTNO = Sheets("Tel-Nexx OOR") 'Tel-Nexx OOR Set wbBK2 = Workbooks.Add 'New Workbook Set wsWS1 = wbBK2.Sheets("Sheet1") 'Sheet1 Set wsWS2 = wbBK2.Sheets("Sheet2") 'Sheet2 Set wsWS3 = wbBK2.Sheets("Sheet3") 'Sheet3 Application.ScreenUpdating = False ' Prevents screen refreshing. CurrentFile = ThisWorkbook.FullName NewFileType = "Excel Files 2007 (*.xlsx)" Dir = ThisWorkbook.path wbBK2.SaveAs Dir & Application.PathSeparator & "Open Order Report -" & Format(Date, "mm-dd-yyyy") & ".xlsx" Set wbBK2 = Dir & Application.PathSeparator & "Open Order Report -" & Format(Date, "mm-dd-yyyy") & ".xlsx" MsgBox wbBK2 End Sub 

正如已经暗示在注释Dir & Application.PathSeparator & "Open Order Report -" & Format(Date, "mm-dd-yyyy") & ".xlsx"不会创build一个对象。 该代码返回一个string,这是VBA中的普通数据types。

当你使用set wbBK2 =上面的代码时发生错误,因为set需要一个对象来引用。

Set wbBK2 = Workbooks.Add ,正如Siddharth Rout已经指出的那样,您实际上正确地使用这一行正确创build了对工作簿的引用。 Set wbBK2 = Workbooks.Add因此不需要进一步设置行。