调用过之后Excel依然残留在任务管理器中,即使把程序关闭也还在,Quit、Close和set nothing等都有,但就是无法关闭进程,为了排除其他嫌疑,现在程序里只剩下下面几行代码了,但Excel.exe总是要手动才能关闭,不然的话第二次运行程序就会出现第二个Excel进程。代码如下,希望有知道的朋友帮忙看看,谢谢
Dim iExcel As Excel.Application
Dim iBook As Excel.Workbook
Dim iSheet As Excel.Worksheet
Set iExcel = CreateObject("Excel.Application")
Set iBook = iExcel.Workbooks.Open(PathStr & "Setting.xls")
Set iSheet = iBook.Worksheets("Sheet1")
iBook.Close
iExcel.Quit
Set iSheet = Nothing
Set iBook = Nothing
Set iExcel = Nothing
谢谢,您说的这个还是不可以的。关键是,程序里面就只有上面那几行代码,只是打开读取了一下,读取完之后就Quit,怎么会关闭不掉这个进程呢?
追答看看有没有On Error语句,如果有,先注释掉,有可能是发生错误,但是没有中断.
如果Excel是不可见的,可以试试加 iExcel.Visible = True 使其可见,这样如果有对话框就能看得到.
像你这样的问题靠猜是不容易猜到原因的,只有细心一点调试.我曾在调用Word时遇到类似的问题,都是因为在退出前会有一个提示保存的对话框.
没有on error语句,form load里面全部代码就是上面那些,另外也试了您说的把excel设置成visible,然后单步执行的话,确实可以看到Excel的工作簿等被关闭,执行到最后Excel也的确被关闭了,没有任何提示对话框,但是进程里面依然还是有Excel.exe
追答那会不会是之前运行时残留的进程呢? 在你创建iExcel对象之后,是应该有一个Excel的进程,你可以单步运行时,看一下该进程的PID,在执行过Quit方法之后,该进程应该可以自行结束,也就是不会再有该PID的进程了,如果你发现还有Excel,但PID不是创建iExcel时的那个,应该就是残存的,或是其它过程创建的.
追问不是之前残存的,每运行一次我都把之前残留的进程手动关掉了。而且也没有其他地方调用Excel,因为所有的代码就是上面那些。另外单步执行观察Excel进程的PID,确实是本次运行没有关闭的。(PS:奇怪的一点是,单步运行的时候,在iExcel.Quit 之前,如果手动关闭Excel表格的话,进程里面就没有了,但是如果用iExcel.Quit来关闭的话,就会残留)
追答这个很难解释了,现在没有环境,没办法调试.猜是猜不到原因了.试试只创建,退出,释放Excel对象,不要打开文件,看看能不能正常退出.有可能是你在Quit之前没有释放Sheet和Book对象的原因吧.
本回答被网友采纳感谢您的回答!我昨天把我上面那段代码从公司拷回去在自己的电脑上试了一下,Excel进程也是可以正常关闭的。今天早上再来公司试,还是关不了,程序是直接拷贝的,完全一样,电脑系统都是Win7,Office都是2007,全都一样,可是为什么在办公室的电脑上这个进程就不能关掉呢?
追答惭愧:我的是Office2003 。是不是2007版本较新。而VB6则是老古董啊。不得而知