gpt4 book ai didi

vba - CreateObject ("Excel.Application") .Workbooks.Open 和 Workbooks.Open 之间的区别

转载 作者:行者123 更新时间:2023-12-01 17:25:57 34 4
gpt4 key购买 nike

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

我收到一条建议,我可以使用 CreateObject 创建一个新实例,因为这会打开一个隐藏的新 Excel 实例。

  1. 这两种打开新工作簿的方式在性能方面还有其他差异吗?

  2. 此外,我应该只使用通过 CreateObject 创建的一个 Excel 实例来打开所有工作簿,还是需要为我必须处理的每个工作簿创建一个实例(似乎浪费了大量的内存和较低的速度)?

最佳答案

Workbooks.Open 使用当前的 MS Excel 实例,CreateObject(“Excel.Application”) 创建一个新的 MS Excel 实例。您可以阅读 CreateObject here .

创建新实例后仅发出 Workbooks.Open 无法确保工作簿在新实例中打开。你必须与它绑定(bind)。例如

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")

关于您的其他问题

Also, should I just use one instance of Excel created using CreateObject to open all Workbooks or do I need to create one instance for each workbook I have to process

您不需要多个实例。您可以使用一个实例。例如

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
'

关于vba - CreateObject ("Excel.Application") .Workbooks.Open 和 Workbooks.Open 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13044473/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com