Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.12.2011, 11:25   #1
Vceznayka
Пользователь
 
Регистрация: 27.10.2011
Сообщений: 27
По умолчанию CreateObject("Excel.Application"), процесс Excel продолжает висеть в диспетчере, когда это уже не нужно

Уважаемые Модераторы все остальные !
Прошу Вас помогите
Программа срабатывает при активизации формы, с помощью CreateObject("Excel.Application") создается объект. В диспетчере задать создается Excel.exe файл. После выполнения всех процедур необходимо чтобы Excel.exe файл закрылся, так как он мешает для дальнейшей работы. Почему-то wb.Close False XL.Quit не срабатывает и весит в диспетчере задать пока не остановишь весь процесс .

Private Sub CommandButton2_Click()
Unload Me
End Sub

Public Sub CommandButton3_Click()
Close_insident.Show
Unload Me
End Sub
Private Sub Form_Activate()
Dim data(1 To 10) As Variant
Dim vrema As Date
Dim x As Integer
Dim j As Integer
Dim q As Integer
Dim z As Integer
Dim Fail As String
Dim w As Integer
Dim r As Integer
Dim i As Integer
Dim wb As Workbook
Dim XL As Excel.Application
Fail$ = "C:\Temp\new projekt\ewsd.xls"
Set XL = CreateObject("Excel.Application")
Set wb = XL.Workbooks.Open(Fail)


r = 1
Do While wb.Worksheets("Insident").Cells(1). Cells(r).Value <> ""
r = r + 1
Loop
w = r + 1

q = 1
' èíöèäåíò 1
wb.Worksheets("Insident").Activate
j = q
Do While wb.Worksheets("Insident").Cells(11) .Cells(j).Value <> "Îòêðûò"
j = j + 1
If j = w Then
MsgBox "Íåîáíàðóæåíî íå îäíîãî îòêðûòîãî èíöèäåíòà"
wb.Close False
XL.Quit
GoTo Value
End If
Loop
x = j
z = j ' äëÿ çàêðûòèÿ èíöèäåíòà

'çàïèñûâàåì äàííûå èç òàáëèöû â ìàññèâ
For i = 1 To 10
With wb.Worksheets("Insident")
data(i) = .Cells(x, i).Value
End With
Next

vrema = wb.Worksheets("insident").Cells(2). Cells(j).Value ' ìîæíî çàïèñàòü òàê vrema = data(2)

With ALL_insident
'Íîìåð èíöèäåíòà
Me.Label1.Caption = data(8)
'Íàïðîâëåíèå
Me.Label2.Caption = data(3)
'TS
Me.Label3.Caption = data(4)
'Ïîòðåáèòåëü
Me.Label4.Caption = data(10)
'Äàòà èíöèäåíòà
Me.Label5.Caption = data(9)
'âðåìÿ èíöèäåíòà
Me.Label6.Caption = vrema
'ïðå÷èíà èíöèäåíòà
Me.Label7.Caption = data(5)
'êñòî ñäàë èíöèäåíò
Me.Label8.Caption = data(1)
End With
q = x + 1
.
.
.

Value:

wb.Close False
XL.Quit
End Sub

Последний раз редактировалось Vceznayka; 29.12.2011 в 11:40.
Vceznayka вне форума Ответить с цитированием
Старый 29.12.2011, 12:21   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Проверил такой код:
Код:
Sub tt()
Dim XL As Excel.Application
Set XL = CreateObject("Excel.Application")
XL.Quit
End Sub
Второй Эксель исчезает не после выполнения строки XL.Quit, а после завершения макроса.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 29.12.2011, 12:43   #3
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

по опыту работы с Excel как с COM объектом
1.
set wb=nothing и все остальные созданные ссылки,вплоть до ячейки
Почистить все ссылки
принудительно надо вызвать чистильщика
2
получаете хендл именно этого процесса Excel сразу после создания .
Запоминаете его,когда выполняете XL.Quit,убиваете процесс.
1 вариант почемуто срабанывает не всегда
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 29.12.2011, 13:18   #4
Vceznayka
Пользователь
 
Регистрация: 27.10.2011
Сообщений: 27
По умолчанию

Уважаемый Hugo121

В коне программы имеются строки

. . .
XL.Quit
End Sub что должно привести к закрытию объекта и макроса, но к сожалению не срабатывает
Vceznayka вне форума Ответить с цитированием
Старый 29.12.2011, 13:31   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Попробуйте заменить
XL.Quit
на
Set XL = Nothing

У меня так сразу лишний Эксель закрывается.
А XL.Quit вообще не срабатывает.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 29.12.2011, 13:40   #6
Vceznayka
Пользователь
 
Регистрация: 27.10.2011
Сообщений: 27
По умолчанию

Спасибо, попробую отпишусь. Но если будут еще идеи то прошу пишите

Последний раз редактировалось Vceznayka; 29.12.2011 в 13:55.
Vceznayka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
CreateObject("excel","xlLabel").... ADVM Microsoft Office Excel 4 15.06.2009 23:44
настроить при открытии Excel 2003 в окошке "Тип файлов" вывод пункта "Все файлы (*.*)" по умолчанию? Unior Microsoft Office Excel 2 01.03.2009 02:42
Excel файл открывается не "до конца" (странички "не показываются" только серое поле) Dorvir Microsoft Office Excel 2 28.03.2008 10:03