Option Explicit
Sub main()
Dim FullPathDataBase As String
FullPathDataBase = "c:\1\Book1.xls"
application.Workbooks.Open FileName:=FullPathDataBase, ReadOnly:=True
Stop
' в диспечере появился процесс EXCEL.EXE
application.Quit
Stop
' в диспечере остаётся процесс EXCEL.EXE
End Sub
' выгрузился EXCEL.EXE
BIT писал(а):в Reference подключил Microsoft Excel 10.0 Object Library
BIT писал(а):application.Quit - не закрытие приложения ?
with new excel.application
with .workbooks.open(filename)
msgbox .worksheets(1).cells(1,1).value
.close false
end with
.quit
end with
Sub MAIN()
Dim FlagErr As Boolean
'код
ReadData "c:\1\Book1.xls", FlagErr
If FlagErr Then
'код
End If
'код
End Sub
Sub ReadData(FullPathDataBase As String, FlagErr As Boolean)
On Error GoTo M_Err
Dim Itime1 As Integer
Dim Btime1 As Boolean
FlagErr = True
With New Excel.Application
With .Workbooks.Open(FileName:=FullPathDataBase, ReadOnly:=True)
For Itime1 = 1 To .Worksheets.Count
With .Worksheets(Itime1)
'код
End With
'код
If Btime1 Then
' некая ошибка в данных хочу выйти из ReadData
'код
.Close False
' что делать с Excel.Application
Exit Sub
End If
Next
.Close False
End With
.Quit
End With
FlagErr = False
Exit Sub
M_Err:
MsgBox "Ошибка - " & Error, vbOKOnly
' что делать с Excel.Application
End Sub
Sub ReadData(FullPathDataBase As String, FlagErr As Boolean)
On Error GoTo M_Err
Dim Itime1 As Integer, Btime1 As Boolean, xl as excel.application
FlagErr = True
set xl=new excel.application
With xl
With .Workbooks.Open(FileName:=FullPathDataBase, ReadOnly:=True)
For Itime1 = 1 To .Worksheets.Count
With .Worksheets(Itime1)
'код
End With
'код
If Btime1 Then
' некая ошибка в данных хочу выйти из ReadData
'код
.Close False
' что делать с Excel.Application
Exit Sub
End If
Next
.Close False
End With
.Quit
End With
FlagErr = False
Exit Sub
M_Err:
MsgBox "Ошибка - " & Error, vbOKOnly
if xl.workbooks.count then xl.workbooks(1).close false
xl.quit
End Sub
Private Sub ReadData()
On Error GoTo M_Err
Dim xl As Excel.Application
Dim xlList As Object ' правильно ли ?
Set xl = New Excel.Application
With xl
.DisplayAlerts = False
Set xlList = .Workbooks.Add.Worksheets(1)
With xlList
.Cells(1, 1).Value = 1
' и т.д.
End With
DopSub xlList ' правильно ли (передача в процедуру) ?
' и т.д.
.Workbooks(1).Close True, "c:\2\1.xls"
.Quit
End With
Exit Sub
M_Err:
MsgBox "Ошибка - " & Error, vbOKOnly
If xl.Workbooks.Count Then xl.Workbooks(1).Close False
xl.Quit
End Sub
Private Sub DopSub(list)
Cells(2, 2) = 2
' и т.д.
' возникла в процедуре ошибка как обработать ?
End Sub
M_Err:
MsgBox "Ошибка - " & Error, vbOKOnly
If xl.Workbooks.Count Then xl.Workbooks(1).Close False
xl.Quit
Private Sub Dop(list)
Dim itime1 As Integer
list.Cells(2, 2).Value = 2
' itime1 = 1 / 0 - правильно выйдет из ReadData
list.Cells(2, 2).Font.Size = 30
' itime1 = 1 / 0 - правильно выйдет из ReadData
list.Range(Cells(3, 3), Cells(3, 3)).Value = 3
' itime1 = 1 / 0 - при выходе из ReadData приложение в диспечере
End Sub
Сейчас этот форум просматривают: Yandex-бот и гости: 73