访问VBA创build不合格的参考,而循环通过Excel表
我试图循环访问Excel中的Excel表格,并保持对excel的不合格的引用。
Dim ExcelApp As Excel.Application Dim ExcelWorkbook As Workbook Dim ExcelWorkSheet As Worksheet Dim i As Integer Dim salesfile As String Set ExcelApp = CreateObject("Excel.Application") salesfile = "C:\filename" Set ExcelWorkbook = ExcelApp.Workbooks.Open(salesfile) With ExcelApp With ExcelWorkbook For Each ExcelWorkSheet In .Worksheets i = i + 1 Next ExcelWorkSheet End With End With ExcelWorkbook.Save ExcelWorkbook.Close Set ExcelWorkSheet = Nothing Set ExcelWorkbook = Nothing Set ExcelApp = Nothing
我尝试过移动资格,使用.quit等,但仍然最终与任务pipe理器中的一个excel.exe进程。 这个问题是在每个循环定义。 如果我在那之前closures,那很好。
看起来你正在closuresexcel工作簿,但不是excel本身。 如果你尝试类似的东西呢?
ExcelApp.Close
改变这个:
i = i + 1
对此:
ExcelWorkSheet.Activate
在VBA中,即使将对象设置为Nothing
,在variables超出范围之前也不会真正释放资源,在这种情况下,这是子/函数的结束。 你可以从另一个子或函数里面调用这个代码,只要excel应用程序在超出范围时被本地声明,它将从正在运行的进程中被删除。
Eric Lippert的博客中有一个入口,解释了原因。