8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

Excel 应用程序未通过 Outlook VBA 函数关闭

Dpedrinha 2月前

12 0

我正在用 Outlook VBA 为自己编写一种自制的票务系统,并使用 Excel 存储所有持久数据。我在 Outlook 中编写了一个函数,用于从 .csv 中获取一些数据...

我正在用 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...我该怎么做才能解决这个问题?

帖子版权声明 1、本帖标题:Excel 应用程序未通过 Outlook VBA 函数关闭
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Dpedrinha在本站《excel》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 我的任务栏上会出现一个无法打开的 Excel 图标。即使我最小化所有其他窗口,也不会出现任何内容。

  • 好吧,我将 .Visible 设置为 True,现在图标不再显示。@Jimmy Smith 我这样做了,但什么都没有改变(我所看到的)。

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

    这里提出的问题正是您遇到的问题。此行
    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
    
返回
作者最近主题: