簡體   English   中英

Excel 應用程序未從 Outlook VBA 功能關閉

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM