您的位置:程序门 -> vb -> 基础类



用vb调用excel,经常出现excel异常,如何避免


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


用vb调用excel,经常出现excel异常,如何避免[已结贴,结贴人:jxwangjm]
发表于:2007-06-14 17:30:11 楼主
如题
发表于:2007-06-14 18:02:081楼 得分:2
什么异常?连问题都不愿意说明么
发表于:2007-06-14 18:29:372楼 得分:0
是一个对话框,内容如下:
excel.exe已经产生错误,将被windows关闭。您将需要重新启动程式。已经建立错误日志。

用vba也经常这样。主要是在关闭excel的程序时会有这个提示。
发表于:2007-06-14 19:04:203楼 得分:0
刚才试了一下,
如果用f8一步一步执行,不会出错,如果是f5则会出现以上错误
发表于:2007-06-14 19:16:324楼 得分:1
程序加断点,分段执行,先把错误范围缩小,再排查
发表于:2007-06-14 19:33:385楼 得分:0
老兄,总共才不到5句代码
发表于:2007-06-14 21:06:016楼 得分:0
找到原因了,用excel.quit后,仍然还有excel.exe进程在系统中
谁能说一下怎样强行中止进程了
用sendmessage好像也不行,还是我不会用
发表于:2007-06-14 22:05:407楼 得分:0
你是生成一个worksheet还是一个workbook?
发表于:2007-06-15 08:35:478楼 得分:0
你是生成一个worksheet还是一个workbook?
我是要退出程序,运行没问题,但是用application.quit之后,还是有excel进程在任务栏内,不知如何处理
发表于:2007-06-15 08:40:199楼 得分:1
private   sub   class_terminate()
       
        set   m_oworksheet   =   nothing
        set   m_ochart   =   nothing
        set   m_oworkbook   =   nothing
       
       
       
        if   m_bvisible   then
                m_oexcelapp.visible   =   true
        else
                m_oexcelapp.quit
                set   m_oexcelapp   =   nothing
        end   if
end   sub
发表于:2007-06-15 08:59:2810楼 得分:0
if   m_bvisible   then
                m_oexcelapp.visible   =   true
        else
                m_oexcelapp.quit
                set   m_oexcelapp   =   nothing
        end   if

执行quit之后在进程管理器中可以看到进程依然存在
发表于:2007-06-15 12:01:5511楼 得分:1
private   objsheet           as   worksheet         'object   reference   to   excel   worksheet
private   objexcel           as   excel.application         'excel   instance

private   sub   form1_terminate()
        '       free   up   memory   before   we   go...
        screen.mousepointer   =   vbdefault
       
        set   objsheet   =   nothing
        set   objexcel   =   nothing
        set   form1=   nothing

end   sub
发表于:2007-06-15 12:09:2312楼 得分:1
private   objsheet   as   worksheet   'object   reference   to   excel   worksheet
private   objexcel   as   excel.application   'excel   instance

private   sub   form_terminate()
me.hide
       
'   free   up   memory   before   we   quit...
screen.mousepointer   =   vbdefault

set   objsheet   =   nothing
set   objexcel   =   nothing
set   frmtest=   nothing
        end
end   sub

private   sub   form_queryunload(cancel   as   integer,   unloadmode   as   integer)
        '       going   somewhere   or   close?
        if   msgbox( "close   the   example   form? ",   vbyesno,   "vb   excel   example ")   =   vbyes   then
                cancel   =   0
                form_terminate
        else
                cancel   =   1
        end   if
end   sub
发表于:2007-06-15 14:05:5313楼 得分:1
学习...
发表于:2007-06-15 15:13:2114楼 得分:1
excelbook.close(true)
excelapp.quit
set   excelapp=nothing
发表于:2007-06-15 22:34:5415楼 得分:1
学习
发表于:2007-06-17 13:50:0316楼 得分:1
qinglangee(礳矶)

excelbook.close(true)
excelapp.quit
set   excelapp=nothing

同意。
没有vb环境了,没有验证,记得是这样。
发表于:2007-06-18 18:02:4717楼 得分:10
我曾经遇到过类似的问题,   这个问题在于excel的quit方法是异步的,   意思是说如果你调用了quit方法之后,其实excel也许并没有退出。你最好在程序中强行发送一个退出的消息给excel,让excel进程退出。


快速检索

最新资讯
热门点击