Dim xlApp As Excel.Application
声明之后是调用:
Set xlApp = CreateObject("Excel.Application")
最后是关闭
xlApp.Quit
你就是少了最后的关闭,每次调用关闭后都要运行上面那句的!!

解决方案 »

  1.   

    Dim xlApp As Excel.Application
    声明之后是调用:
    Set xlApp = CreateObject("Excel.Application")
    最后是关闭
    xlApp.Quit
    set xlApp=nothing
      

  2.   

    肯定是调用Excel对象时忘了关闭对象了。
    先声明一个Excel对象
    Dim Xlapp as Excel.Application
    调用
    Set Xlapp=CreateObject("Excel.Application")
    操作Excel
    例如
    Xlapp.Sheet("Sheet1".Cell(1.1)="abcd"
    最后要记得关闭Excel对象
    xlApp.Quit
    Set Xlapp=Nothing
      

  3.   

    謝謝上面兩位.
    問題沒有那麼簡單.關閉必須是手工操作.相關代碼如下:
    Dim Exapp As Excel.Application, Exwb As Excel.WorkbookSet Exapp = CreateObject("Excel.Application")
    Set Exwb = Exapp.Workbooks.Open(App.Path & "\Report\001.xls")
    With Exapp
            .ActiveSheet.PageSetup.LeftMargin = Application.InchesToPoints(0.7)
            .ActiveSheet.PageSetup.RightMargin = Application.InchesToPoints(0.7)
            .ActiveSheet.PageSetup.TopMargin = Application.InchesToPoints(1.4)
            .ActiveSheet.PageSetup.BottomMargin = Application.InchesToPoints(0.7)
            ................其它Excel填充內容代碼
    End With
    Exapp.Visible = True
    Set Exwb = Nothing
    Set Exapp = Nothing看看是什麼原因?
      

  4.   

    这样的话是应手工关闭
    因为Exapp.visible=True这一句是打开Excel来显示的。
      

  5.   

    有時使用十天或幾個月都不會出現這樣現象.
    出現這種現象時,就是手工關閉時Excel沒有退出內存.
    我一般要求操作者重新開機來解決.
      

  6.   

    你可作一个关闭按钮啊,平时按钮的状态是灰的(enable=false)在启动excel后变成ture
    再启动excel时可以进行判断如果按钮的enable=false则不能运行或者运行 xlApp.Quit
    Set Xlapp=Nothing 就可以了!!
      

  7.   

                                                                                              
                                                  UPUP                                        
                                                UPUPUP                                        
                                                UPUPUP                                        
                                                UPUPUPUP                                      
                                                UPUPUPUP                                      
                                                  UPUPUPUP                                    
                                                    UPUPUPUP                                  
                                      UPUPUP          UPUPUP                                  
                                      UPUPUPUP          UPUPUP                                
                                    UPUPUPUP            UPUPUPUP                              
                                    UPUPUPUP              UPUPUPUP                            
                                  UPUPUPUP                  UPUPUPUP                          
                                  UPUPUPUP                    UPUPUPUP                        
                                UPUPUPUP                        UPUPUPUP                      
                                UPUPUP                          UPUPUPUPUP                    
                              UPUPUPUP                            UPUPUPUPUPUP                
                            UPUPUPUP              UPUPUPUPUPUP  UPUPUPUPUPUPUPUPUP            
                          UPUPUPUP    UPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUP          
                        UPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUP      
                      UPUPUPUPUPUPUPUPUPUPUPUPUPUPUP      UPUPUPUPUP  UPUPUPUPUPUPUPUPUPUP    
                    UPUPUPUPUPUP    UPUPUPUPUPUPUP        UPUPUPUP        UPUPUPUPUPUPUPUPUP  
                    UPUPUPUP              UPUPUPUP        UPUPUPUP              UPUPUPUPUP    
                  UPUPUP                  UPUPUP          UPUPUPUP                            
                                        UPUPUPUP          UPUPUPUP                            
                                        UPUPUP          UPUPUPUP                              
                                      UPUPUP            UPUPUPUP                              
                                    UPUPUPUP            UPUPUPUP                              
                                  UPUPUPUP            UPUPUPUP                                
                                UPUPUPUPUP            UPUPUPUP                                
                              UPUPUPUPUPUPUPUP      UPUPUPUPUP                                
                            UPUPUPUPUP    UPUPUPUPUPUPUPUPUP                                  
                          UPUPUPUP          UPUPUPUPUPUPUPUP                                  
                          UPUP                UPUPUPUPUPUP                                    
                                                UPUPUPUPUP                                    
                                                    UPUP                                      
                                                                                              
      

  8.   

    我看看大家的回家,可能很少有人在實際的應用過程中用Excel作報表.
    都沒有回答到根源問題.不過還是謝謝各位的參與.
      

  9.   

    注:用Excel做報表的該系統已運行一年多了.
    出現這樣情況的時候不是很多.我想跟操作系統調度不穩定有關系.(我分發前,在本機上測試個N次.只有在手工關閉後,Excel還留在內存中才會出現這種現象.其它情況下,你不管關閉不關閉此方法調用出來的Excel,你調用多次也不會出現任何問題)
      

  10.   

    我想这应该是Visual Basic在资源释放方面的问题,使用ADO也经常有这种现象
      

  11.   

    看来VB的程序员不仅要对自己程序的BUG负责,而且要对MS程序员的BUG负责啊!!
    不仅是VB本身的BUG还包括windows和数据库的!唉!
      

  12.   

    一个想法不知可行否,可视化后,取得该EXCEL的窗口HWND,然后用API关闭此窗口,我在调用时,好像没有发生过这种事件,可能的确和操作系統調度不穩定有關系
      

  13.   

    因為調用顯示的Excel報表要給用戶查看,然後決定是否要列印.程序中是不能調用ExApp.Quit這句的.且我看調用了該句,也只不過是詢問是否關閉.
    並且運行的過程中,在不關閉以前調用的Excel報表時允許用戶修改前台參數然後繼續調用Excel顯示其它的信息.
      

  14.   

    TO:yangzhaoyu(老妖),此現象是偶爾出現的.或許你測試1000次也不許出現這種事件.
      

  15.   

    在整个程序的结束(END)模块之前用以下代码
    ex.quit
    Set Exwb = Nothing
    Set Exapp = Nothing
    end
    如果还存在问题,也不用重新开机,最多ctrl+alt+DEL结束任务就可以了。
      

  16.   

    我也做过用excel打印报表的程序,也遇到过你说的问题,ctrl+alt+DEL会看到execl还在运行。同时还是一种内存泄露,和使用ado不释放引起内存泄露类似。但excle提供服务,问题更复杂一点。
    关键原因是没有释放,而绝对不是什么window,vb的bug,应为我的程序现在再没有出过问题了。其实就是 .quit  和 set **=nothing, 只是你没考虑全部情况,在有些时候关闭了程序却没释放excel. 还有一点是,如果你只是打印而不对生成的报表做修改的话,最好不要让它visible,因为如果手动把excel关了,而你的程序再试图关闭时就也会出错。如果真的要修改,就多加一个button,要求用户要关闭时别在excel直接关闭,而用的button关闭,你在click里释放,就不会有问题了。或者干脆用on error goto errorhandle,在你的errorhandle里进行补救,当然还是把该释放的释放了。总之一句话,就是在合适的时机,set **=nothing。
      

  17.   

    在调用EXCEL时,可以先判断一下EXCEL是否打开,如果没有打开就调用eXCEL
    否则。。