Option Explicit
Dim WithEvents ExcelApp As Excel.Application
Const workbookname As String = "c:\tmp\x.xls"
Private Sub ExcelApp_WorkbookBeforeClose(ByVal Wb As Excel.Workbook, Cancel As Boolean)
Dim wb2 As Excel.Workbook
If ExcelApp.Visible Then
If UCase(Wb.FullName) = UCase(workbookname) Then
Cancel = True
ExcelApp.Visible = False
' Закрываем все остальные документы
For Each wb2 In ExcelApp.Workbooks
If Not wb2 Is Wb Then wb2.Close
Next
End If
End If
End Sub
Private Sub Form_Click()
ExcelApp.Visible = True
End Sub
Private Sub Form_Load()
Set ExcelApp = CreateObject("Excel.application")
ExcelApp.Workbooks.Open workbookname
End Sub
Private Sub Form_Unload(Cancel As Integer)
Dim ea2 As Excel.Application, wb2 As Excel.Workbook
Set ea2 = ExcelApp
Set ExcelApp = Nothing
If ea2.Workbooks.Count = 1 Then
' Закрываем приложение
ea2.Visible = False
ea2.Quit
Else
' Закрываем только свой документ
For Each wb2 In ea2.Workbooks
If UCase(wb2.FullName) = UCase(workbookname) Then
wb2.Close
Exit For
End If
Next
End If
End Sub
Сейчас этот форум просматривают: Google-бот и гости: 17