Excel应用程序不从Outlook VBAfunctionclosures

我在Outlook VBA中为自己编写了一个本地自动售票系统,而且我正在使用Excel来存储所有的持续数据。 我有一个写在Outlook中的函数从.csv获取一些数据并返回它。 这一切都工作正常,但closures工作簿后,退出应用程序,并将应用程序设置为空,我仍然有一个Excel进程正在运行! 这是我的代码:

Private Function GetNewTicketNumber() As Integer Dim xlApp As Excel.Application Set xlApp = New Excel.Application With xlApp .Visible = False .EnableEvents = False .DisplayAlerts = False End With Dim FileStr As String Dim NumberBook As Workbook Dim TheRange As Range FileStr = "C:\OMGITSAPATH.csv" Set NumberBook = Workbooks.Open(FileStr) Set TheRange = NumberBook.Worksheets(1).Range("A1") GetNewTicketNumber = TheRange.Value TheRange.Value = TheRange.Value + 1 NumberBook.Save NumberBook.Close xlApp.Quit With xlApp .Visible = True .EnableEvents = True .DisplayAlerts = True End With Set xlApp = Nothing End Function 

有什么我在这里做错了吗? 我的问题是类似于这里的 ,但我已禁用DisplayAlerts …我能做些什么来解决这个问题?

尝试从xl_doesnt_quit完全限定您对Excel的引用

这里提出的问题正是你所拥有的。 这条线
Range("a1").Value = Range("a1").Value + 1
打开xl实例

问题最常见的原因是对自动化应用程序的“全局”引用。 不幸的是,在某些情况下,可以直接引用自动化对象的实体(属性/方法/对象)。 这个引用对于调用应用程序来说是有效的。 因此,只要调用程序处于活动状态,引用就会保留。 因此,操作系统不会在主叫方处于活动状态时结束自动应用。

重新下面的代码(也使用后期绑定 – 这排除了不合格的可能性)。

请改变你的path,以适应。

  Private Function GetNewTicketNumber() As Long Dim xlApp As Object Dim objWB As Object Dim objWs As Object Dim FileStr As String FileStr = "C:\temp\test.xlsx" Set xlApp = CreateObject("excel.application") With xlApp .EnableEvents = False .DisplayAlerts = False End With Set objWB = xlApp.Workbooks.Open(FileStr) Set objWs = objWB.Sheets(1) GetNewTicketNumber = objWs.Range("A1") objWs.Range("A1") = objWs.Range("A1") + 1 objWB.Save objWB.Close Set objWB = Nothing xlApp.Quit Set xlApp = Nothing End Function