首先,我想说明我需要使用LateBinding,因为我的程序在不同版本的excel中运行。
我在模块中声明了一个Public Sub,可以调用该模块来启动excel应用程序的对象创建。
'Declare Public Excel Variable to Call from one place and easy manipulation
Public xlApp As Object
Public wb As Object
Public wb2 As Object
Public ws As Object
Public ws2 As Object
Public Sub InitializeExcel()
'Create the Excel Objects
Set xlApp = CreateObject("Excel.Application")
End Sub
然后在我创建的每个使用excel应用程序的子例程中,我调用 InitializeExcel ,并在每一端执行以下操作:
On Error Resume Next
xlApp.Quit
Set xlApp = Nothing
Set wb = Nothing
Set wb2 = Nothing
Set ws = Nothing
Set ws2 = Nothing
我现在的问题是:
我是否需要在每个需要的子程序上调用 InitializeExcel excel应用程序或者我可以在开始时调用它一次 应用
答案 0 :(得分:0)
我测试了一些事情并得到了这些结果:
每次需要调用 InitializeExcel
,因为在每个子例程结束时,如上所述将 xlapp 设置为 Nothing p>
如果我删除每个子例程中的Set xlApp = Nothing
,那么我可以“重用”xlApp
作为Excel应用程序对象。但是,这会导致Excel应用程序在后台保持运行的问题,每次打开新工作簿时,都会运行另一个Excel应用程序实例。
所以我想,最好的方法是我的初始设置,我调用InitializeExcel
,然后在调用该过程的每个例程中将所有内容设置为Nothing
。