以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  excel 进程无法退出  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=190616)

--  作者:puma
--  发布时间:2024/2/26 8:35:00
--  excel 进程无法退出
问题:excel 进程无法自动退出,每次需要手动关闭进程?
还有其他关闭的命令吗?

一个 app 进程只能打开一个excel文件?

代码
Dim App As New MSExcel.Application
App.Visible = True
app.EnableEvents =False
app.DisplayAlerts = False \'关闭excel 警告
app.AskToUpdateLinks = False \'关闭excel 数据更新提示
Dim sWb As MSExcel.Workbook \'原始文件
Dim dwb As MSExcel.Workbook \'目标文件
swb = app.Workbooks.Open(FileName:=sFilePath , UpdateLinks:=0)
....代码

dwb.Close(SaveChanges:=True) \'顺序不能更改
swb.Close(SaveChanges:=False) \'顺序不能更改
App.quit

图片点击可在新窗口打开查看此主题相关图片如下:下载.png
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2024/2/26 8:41:00
--  
放到try里面

Dim App As New MSExcel.Application
Try
   App.Visible = True
app.EnableEvents =False
....代码

dwb.Close(SaveChanges:=True) \'顺序不能更改
swb.Close(SaveChanges:=False) \'顺序不能更改
App.quit
Catch ex As Exception
   msgbox(ex.message)
App.quit
End Try

--  作者:puma
--  发布时间:2024/2/26 10:25:00
--  
没有异常
--  作者:有点蓝
--  发布时间:2024/2/26 10:27:00
--  
那就不是程序的问题。App.quit肯定可以正常退出的。要么是之前残留的进程,要么是其它软件比如杀毒软件的原因
--  作者:puma
--  发布时间:2024/2/26 15:00:00
--  
有时候可以退出,有时候有残留。
我只能用方法终止,进程。
    Public Function KillExcel()
        Dim processName As String = "EXCEL" \'将此处的“processname”更改为需要关闭的进程名称或ID
        For Each proc In Process.GetProcesses()
            If proc.ProcessName.ToLower().Contains(processName.ToLower()) Then
                If proc.MainWindowTitle = "" Then
                    proc.Kill()
                End If

            End If
        Next
    End Function

--  作者:puma
--  发布时间:2024/2/26 15:02:00
--  
我感觉,退出的时候,只是关闭excel,没有终止进程
以下是引用有点蓝在2024/2/26 10:27:00的发言:
那就不是程序的问题。App.quit肯定可以正常退出的。要么是之前残留的进程,要么是其它软件比如杀毒软件的原因我


--  作者:有点蓝
--  发布时间:2024/2/26 15:17:00
--  
App.quit肯定可以正常退出,包括中止进程
[此贴子已经被作者于2024/2/26 15:17:24编辑过]