Private Sub ExcelApp_WorkbookBeforeClose(ByVal Wb As Excel.Workbook, Cancel As Boolean)
'用户在程序运行时关闭工作簿时提示错误。
If 取消 Then Exit Sub
If (MsgBox(" 程序正在运行中,如果您此时关闭此工作簿," & Chr(10) & Chr(13) & "可能导致系统的非正常结束,您真的想退出吗?", vbOKCancel + vbCritical + vbSystemModal, "警告") = vbCancel) Then
   Cancel = True
End If
End Sub

解决方案 »

  1.   

    Jneu(沧海桑田):
    我允许用户关闭WORKBOOK
    但不允许关闭EXCEL
      

  2.   

    Public Function ComOpenExcelApp(ByRef hkoExcelApp As Excel.Application) As Boolean    On Error GoTo OpenExcel_Err    ComOpenExcelApp = False    'Excelの起動
        Set hkoExcelApp = CreateObject("Excel.Application")    hkoExcelApp.Visible = False                     '表示しない
        hkoExcelApp.ScreenUpdating = False
        hkoExcelApp.DisplayAlerts = False    ComOpenExcelApp = True    Exit FunctionOpenExcel_Err:    'システム起因の障害が発生しました
        If Not hkoExcelApp Is Nothing Then
            hkoExcelApp.Quit
            Set hkoExcelApp = Nothing
        End If
        MsgBox Err.Description, vbInformation, MSG_TITLEEnd FunctionPublic Function ComOpenExcelBook(ByRef hkoExcelApp As Excel.Application, _
                                ByRef hkoExcelBook, ByVal hksFileName As String) As Boolean    On Error GoTo Book_Err
        ComOpenExcelBook = False    'エクセル・WorkBookを開く
        Set hkoExcelBook = hkoExcelApp.Workbooks.Add(hksFileName)    ComOpenExcelBook = True    Exit FunctionBook_Err:
        MsgBox Err.Description, vbInformation, MSG_TITLE
    End Function
    Public Function ComKillExcel(ByRef hkoExcelApp As Excel.Application) As Long    '変数の宣言
        Dim looWKBook               As Workbook         'エクセルのワークボーク    On Error Resume Next    Err.Clear    ComKillExcel = -1    '既にエクセル上で開かれているファイルと引数のファイルを判定する
        For Each looWKBook In hkoExcelApp.Workbooks
            hkoExcelApp.DisplayAlerts = False
            looWKBook.Close
        Next    hkoExcelApp.DisplayAlerts = True
        hkoExcelApp.ScreenUpdating = True
        hkoExcelApp.Quit    Set hkoExcelApp = Nothing
        ComKillExcel = Err.Number
        On Error GoTo 0End Function给你几个excel控制的函数,注意去掉注释(日文的)
      

  3.   

    DisplayAlerts属性 是干什么用的?
      

  4.   

    IF exlApp IS Nothing THEN 
    Set exlApp = CreateObject("Excel.Application")
      

  5.   

    DisplayAlerts属性 如果宏运行时 Microsoft Excel 显示特定的警告和消息
      

  6.   

    Jneu(沧海桑田):
    是这样的,我在程序启动时就创建一个Excel.Application
    直到程序退出时才Quit和Nothing在程序运行期间,我可以自由的增减WorkBook
    用户也可以EXCEL窗口中操作程序所建的EXCEL对象(包括增减WorkBook)问题是:
    当用户在EXCEL窗口中关闭了EXCEL对象之后(这时EXCEL进程关闭,线程还在)
    再用这个Excel.Application建WorkBook时,只能看到EXCEL对象却看不到WorkBook
    而WorkBook确实存在最好的解决办法是:不让用户在EXCEL对象中关闭EXCEL。
    可我不知道怎么实现!!!
      

  7.   

    Wordapp.Workbooks.Close
        wordapp.application.quit
      

  8.   

    用户在EXCEL窗口中关闭了EXCEL对象,不能使exlApp为Nothing
      

  9.   

    我觉得用户在EXCEL窗口中关闭EXCEL对象时,使得exlApp的某个或某些属性发生了改变。
    如果把这些属性重新设置一下,可能就可以了。不知你们是怎么认为的?