CreateObject(“Excel.Application”).Workbooks.Open和Just Workbooks.Open之间的区别

我目前正在使用Workbooks.Open来处理目录中包含的大量文件。 但是打开和closures这些文件会使文件出现在任务栏中,我想避免不停的闪烁。

我得到了一个build议,我可以使用CreateObject创build一个新的实例,因为这将打开一个新的隐藏的Excel实例。

  1. 在性能方面开放新工作簿的两种方式有没有其他区别?

  2. 另外,我是否应该只使用一个使用CreateObject创build的Excel实例来打开所有Workbook,或者是否需要为每个工作簿创build一个实例( 这似乎浪费了大量的内存和较less的速度 )?

Workbooks.Open使用当前MS Excel实例和CreateObject(“Excel.Application”)创build一个新的MS Excel实例。 你可以在这里阅读CreateObject

在创build新实例之后,只需发出一个Workbooks.Open簿,打开工作簿并不能确保工作簿在新实例中打开。 你将不得不与它绑定。 例如

 Dim oXLApp As Object, wb As Object Set oXLApp = CreateObject("Excel.Application") '~~> Hide Excel oXLApp.Visible = False '~~> Open files Set wb = oXLApp.Workbooks.Open("C:\Sample.xls") 

关于你的其他问题

此外,我应该只使用一个使用CreateObject创build的Excel实例来打开所有工作簿,或者我需要为每个工作簿创build一个实例,我必须处理

你不需要几个实例。 你可以使用一个实例。 例如

 Dim oXLApp As Object, wb As Object Set oXLApp = CreateObject("Excel.Application") '~~> Hide Excel oXLApp.Visible = False '~~> Open files Set wb = oXLApp.Workbooks.Open("C:\Sample1.xls") ' '~~> Do some Stuff ' wb.Close (False) '~~> Open files Set wb = oXLApp.Workbooks.Open("C:\Sample2.xls") ' '~~> Do some Stuff ' wb.Close (False) ' '~~> And So on ' 

后期绑定比早期绑定稍慢,但您甚至可能不会注意到这种差异。 是的,您可以使用所有工作簿的一个实例。 请注意这一点:

 Dim xl As New Excel.Application xl.Workbooks.Open "z:\docs\test.xlsm" 

除非你说:

 xl.Visible = True 

确保closures错误陷阱中的任何实例。