CreateObject(“Excel.Application”).Workbooks.Open和Just Workbooks.Open之间的区别
我目前正在使用Workbooks.Open
来处理目录中包含的大量文件。 但是打开和closures这些文件会使文件出现在任务栏中,我想避免不停的闪烁。
我得到了一个build议,我可以使用CreateObject
创build一个新的实例,因为这将打开一个新的隐藏的Excel实例。
-
在性能方面开放新工作簿的两种方式有没有其他区别?
-
另外,我是否应该只使用一个使用
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错误陷阱中的任何实例。