[英]Excel application not closing from Outlook VBA function
我正在為自己在 Outlook VBA 中編寫一種本土的票務系統,並且我正在使用 Excel 來存儲所有持久性數據。 我有一個用 Outlook 編寫的函數,用於從 .csv 獲取一些數據並返回它。 這一切正常,但在我關閉工作簿后,退出應用程序,並將應用程序設置為空,我仍然有一個 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 實例保持打開狀態
問題的最常見原因是對自動化應用程序的“全局”引用。 不幸的是,在某些情況下,可以直接引用自動化對象的實體(屬性/方法/對象)。 該引用實際上對調用應用程序是全局的。 因此,只要調用程序處於活動狀態,引用就會保持原位。 因此,當調用者處於活動狀態時,操作系統不會結束自動應用程序。
重新剪切下面的代碼(它也使用后期綁定 - 這排除了不合格的可能性)。
請改變你的道路以適應。
代碼
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.