我想把VB中的数据保存在Excel中,我用的一个开始和结束按钮,但是当我按下结束按钮时,Excel并没有在进程中消失
,除非我把整个程序给结束了才可以终止Excel这个进程,可我又不能终止程序的运行,问下高手有什么方法可以在不用
终止程序的情况下就可以结束Excel进程。下面是我的程序代码:
Dim exApp  As Excel.Application
Private Sub start_Command_Click()
  Set exApp = New Excel.Application
   CommonDialog1.Filter = "Excel 表|*.xls"
     CommonDialog1.ShowOpen
      If Len(CommonDialog1.FileName) >= 1 Then
    exApp.Workbooks.Open CommonDialog1.FileName
    Range(Cells(1, 1), Cells(1, 1)) = "采集的温度"
   Range(Cells(1, 2), Cells(1, 2)) = "P(比例系数)"
   Range(Cells(1, 3), Cells(1, 3)) = "I(积分系数)"
   Range(Cells(1, 4), Cells(1, 4)) = "D(微分系数)"
   exApp.ActiveWorkbook.Save
    exApp.ActiveWorkbook.Close
      End If
End Sub
望大家给点意见!
Private Sub stop_Command_Click()
   exApp.Quit
   Set exApp = Nothing
End Sub

解决方案 »

  1.   

    form是不是用模式窗口方式打开的?
      

  2.   

    既然  start_Command_Click 已经将 WorkBook 保存、关闭了,为什么不一起将 exApp 一起关闭?
    stop_Command_Click 明显多余,而且如果不按结束按钮而连按两次开始按钮就会多出一个未关闭的 Excel 实例。
    你的这种应用应该将所有的 Excel 操作全部在一个按钮内实现,exApp 变量也应该作为过程级变量声明。
      

  3.   

    其实还有一部分程序,我是用Timer控件,每隔一定时间VB中的数据保存在Excel中,所以我要用到stop_Command_Click 这一按钮来终止Excel进程,但是我按下stop_Command_Click 之后,再按start_Command_Click 时就会提示出错.
      

  4.   

    你首先判断有没有打开的workbook 还在使用,有的话就关闭它,然后在关闭excel进程
      

  5.   

    我是新手,能说明白一些怎样判断存在没有关闭的workbook?
      

  6.   


    for i =0 to exApp.workbooks.count-1
    exApp.workbooks(i).close()
    next你试试看看可行。
      

  7.   

    我改成下面这样试了下,还是不能结束Excel 进程.
    Private Sub stop_Command_Click() 
      for i =0 to exApp.workbooks.count-1 
      exApp.workbooks(i).close
      next 
      exApp.Quit 
      Set exApp = Nothing 
    End Sub 
      

  8.   

    看这里:http://www.tushar-mehta.com/excel/vba/xl_doesnt_quit/
      

  9.   

    那么需要先将 Timer 停下来,而且如果由其它的模块级 Excel 变量需要按从小到大的次序释放。
    http://topic.csdn.net/u/20080713/18/656d84fe-12d1-43ae-9e64-0f1900de3a1c.html
      

  10.   


    '打开excel文件
    Public Sub openExcel(ByVal strName As String)
        If blnOpenStatus Then
            closeExcel
        End If
        Set xlsApp = CreateObject("Excel.Application")
        Set xlsBook = xlsApp.Workbooks.Open(strName)
        Set xlsSheet = xlsBook.ActiveSheet
        blnOpenStatus = True
    End Sub'关闭excel文件
    Public Sub closeExcel()
        If blnOpenStatus Then
            blnOpenStatus = False
            xlsBook.Close
            xlsApp.Quit
            Set xlsApp = Nothing
            Set xlsBook = Nothing
            Set xlsSheet = Nothing
        End If
    End Sub
    当然, xlsApp  xlsBook  xlsSheet 为模块级变量
    blnOpenStatus 标记是否有打开的EXCEL进程;
    若有则先关闭,若没有则不关闭;