用VB控制Excel完成工作后,用了Exel.Quit(Exel为Application对象)和set Exel = Nothing 语句,但在任务管理器里还能看到有Excel进程,只是没有Excel任务而已,请教是什么原因?如果能让该进程结束?

解决方案 »

  1.   

    应该在设nothing之前用Workbooks("工作薄名").close将工作薄关闭.
      

  2.   

    如何杀死系统中运行的进程,比如word,excel等
      

  3.   

    VBExcel.Application.Quit
    VBExcel.Quit
    (VBExcel = CreateObject("excel.application"))
      

  4.   

    到FAQ中找到结束进程的贴子看看就知道了
      

  5.   

    在运行前,先结束系统中的所有word进程,该怎么做?
      

  6.   

    Option Explicit
    Public Declare Function FindWindow _
           Lib "user32" Alias "FindWindowA" _
           (ByVal lpClassName As String, _
           ByVal lpWindowName As String) _
           As LongPublic Declare Function SendMessage _
           Lib "user32" Alias "SendMessageA" _
           (ByVal hWnd As Long, _
           ByVal wMsg As Long, _
           ByVal wParam As Long, _
           lParam As Long) _
           As LongPublic Function ProcessKillWord() As Boolean
       'Dim lpClassName As String
       'Dim lpCaption As String
       Dim Handle As Long
       Dim bKill As Boolean
       Dim ProcessTime, Start
       ProcessTime = 20
       Const NILL = 0&
       Const WM_SYSCOMMAND = &H112
       Const SC_CLOSE = &HF060&   On Error GoTo ExitHere
        Start = Timer
       ' lpClassName = "OpusApp"
       ' lpCaption = vbNullString
        bKill = False     Do While Not bKill
             Handle = FindWindow("OpusApp", vbNullString)
           If Handle > 0 Then
              bKill = False
             Handle = SendMessage(Handle, WM_SYSCOMMAND, SC_CLOSE, NILL)
           Else
            bKill = True
           End If
          If Timer > Start + ProcessTime Then GoTo ExitHere
         Loop
    ExitHere:
        ProcessKillWord = bKill
    End FunctionPublic Function KillWord() As Boolean
       Dim bResult As Boolean
       Dim wrd As Object
       Dim wrdDoc As Object
       On Error GoTo ErrHandler
        bResult = False
        Set wrd = GetObject(, "Word.Application")
        For Each wrdDoc In wrd.Documents
         wrdDoc.Close False
        Next wrdDoc
        '27Novbaijb add wrd.quit
        wrd.Quit
        If Not ProcessKillWord Then
          bResult = False
          GoTo ExitHere
        End If
    ErrHandler:
       If wrd Is Nothing Then
        bResult = True
       End IfExitHere:
        If Not wrd Is Nothing Then
         Set wrd = Nothing
        End If
         KillWord = bResult
    End Function
      

  7.   

    FindWindow 通过Class Name找程序
      
       Class Name         Application
       -------------------------------   SciCalc            CALC.EXE
       CalWndMain         CALENDAR.EXE
       Cardfile           CARDFILE.EXE
       Clipboard          CLIPBOARD.EXE
       Clock              CLOCK.EXE
       CtlPanelClass      CONTROL.EXE
       XLMain             EXCEL.EXE
       Session            MS-DOS.EXE
       Notepad            NOTEPAD.EXE
       pbParent           PBRUSH.EXE
       Pif                PIFEDIT.EXE
       PrintManager       PRINTMAN.EXE
       Progman            PROGMAN.EXE   (Windows Program Manager)
       Recorder           RECORDER.EXE
       Reversi            REVERSI.EXE
       #32770             SETUP.EXE
       Solitaire          SOL.EXE
       Terminal           TERMINAL.EXE
       WFS_Frame          WINFILE.EXE
       MW_WINHELP         WINHELP.EXE
       #32770             WINVER.EXE
       OpusApp            WINWORD.EXE
       MSWRITE_MENU       WRITE.EXESendMessage(Handle, WM_SYSCOMMAND, SC_CLOSE, NILL)
     关掉他是不是很简单
      

  8.   

    我原来也出现过这个问题。
    也是像楼上的这么干的。不知道你是不是这样干的:
    Dim Exel as Object
    Set Exel=.....改为如下试试:
    Dim Exel as Excel.Application
    Set Exel = New Excel.Application
    Exel.Visible=True
      

  9.   

    To ufcr(蓝石) 
    我这么干过,但这样会报告非法操作的