【发布时间】:2013-11-18 05:48:00
【问题描述】:
我正在寻求澄清“新”对对象和脚本的影响。
我的理解是,如果我需要对 excel 文档执行操作并且应用程序已关闭,那么我应该使用 New Excel.Application。
如果我保持此应用程序处于活动状态(例如通过工作簿等对象)并且稍后在脚本中我决定打开另一个工作簿,我应该仍然使用 New Excel.Application 还是使用 Excel.Application 更好那么呢?
我担心的是我要编写一个长脚本,该脚本将在至少 5 个工作簿上执行操作。我将不得不从一个工作簿切换到另一个工作簿,然后再回到前一个......
如果脚本每次创建一个新的 Excel.Application,我最终可能会运行很多它们,我担心这种混乱会产生问题。
这样写更合适吗:
Dim NxlApp as New Excel.Application
Dim xlApp as Excel.Application
NxlApp.Workbooks.Open "C:\Users\...\WorkbookA.xlsx"
NxlApp.Visible = True
'Perform actions on WorkbookA (keep it open)
Set ExcelApp = GetObject("", "Excel.Application.14")
xlApp.Workbooks.Open "C:\Users\...\WorkbookB.xlsx"
xlApp.Visible = True
'Perform actions on WorkbookB (keep it open)
'Go back to WorkbookA (using the xlApp variable this time)
xlApp.Workbook("A.xlsx")...
【问题讨论】:
-
OP 有一个好点...我一直注意到 Microsoft Scripting Runtime 需要为 FileScriptingObject 提供一个 New 关键字,但对于其他库则不需要。为什么有些需要 New 而有些不需要?
标签: vba excel instance excel.application