Excel vba:对象variables或块variables未设置:在循环中打开工作簿

我有一个函数,它将resultDatesCollection作为参数,并遍历每个date,打开相应的工作簿并从中获取一些数据。 但是,我得到了一个

对象variables或块variables未设置

错误。 当我将一个新的工作簿设置为budgetWorkbookvariables时,该错误似乎就发生了。 我评论了一切后面的事情,因为它似乎没有引起这个问题。

 Function getBudgetItems(stateCopy As State, resultDates As Collection) Dim ExcelApp As Object Set ExcelApp = getExcelApp() Dim budgetWorkbook As Workbook Dim tempWb As Workbook Dim budgetItem As Variant Dim currentDate As Variant For Each currentDate In resultDates Debug.Print "****TESTING****" Set tempWb = ExcelApp.Application.Workbooks.Open( _ stateCopy.budgetWorkbooks(currentDate)) Debug.Print "stateCopy...: " & stateCopy.budgetWorkbooks(currentDate) Debug.Print tempWb.Name Debug.Print "path: " & tempWb.path Debug.Print "****OPENED****" tempWb.Close Debug.Print "****CLOSED****" Debug.Print "****TESTING_END****" Debug.Print "starting, curentDate: " & currentDate Set budgetWorkbook = _ ExcelApp.Application.Workbooks.Open( _ stateCopy.budgetWorkbooks(currentDate)) 'this line looks to be the culprit 'everything down here is commented out Next End Function 

我不确定背后的原因是什么。 我试图做类似的事情 – 打开一个新的工作簿,并将其设置为一个单独的variables在一个循环中的function,并且工作正常。

这是我的Debug窗口的最后一个:

 ****TESTING**** stateCopy...: Y:\project_name\2014\01.01.2014\workbook_name.xls workbook_name.xls path: Y:\prject_name\2014\01.01.2014 ****OPENED**** ****CLOSED**** ****TESTING_END**** starting, curentDate: 01.01.2014 ****TESTING**** stateCopy...: Y:\project_name\2015\01.01.2015\workbook_name.xls 

因此,看起来第一个周期之后,所有事情都会中断,同时将第二个工作簿设置为budgetWorkbook 。 如果我注释掉这一行

 Set budgetWorkbook = _ ExcelApp.Application.Workbooks.Open( _ stateCopy.budgetWorkbooks(currentDate)) 

testing部分完美地经历了所有的循环,但是如果我返回那条线,那么第二个testing开始没有完成。

编辑:

 Function getExcelApp() As Object Dim ExcelApp As Object Set ExcelApp = CreateObject("Excel.Application") ExcelApp.Visible = False ExcelApp.ScreenUpdating = False ExcelApp.DisplayAlerts = False ExcelApp.EnableEvents = False Set getExcelApp = ExcelApp End Function