Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: БАГ VB6 и Excel - не выгружается Добавлено: 19.10.06 17:45  

Автор вопроса:  Vas
Dim exlApp As New Excel.Application
exlApp.Workbooks.Add
и т.д. После закрытия Excel он НЕ ВЫГРУЖАЕТСЯ из памяти, что видно в списке процессов Диспетчера задач (Win XP Pr.). Надо закрывать своё приложение, тогда выгружается. Если не закрывая вызвать опять эту процедуру - ошибка, и надо Excel выгружать в процессах Диспетчера задач. ТЕПЕРЬ ГЛАВНАЯ ФИШКА: Дело в том, что у меня там делается шапка таблицы с форматированием, а потом .CopyFromRecordset (около 4000 записей и 24 поля)
Кода страницы на две. Но если код урезать засчет форматирования шапки таблицы, то все НОРМАЛЬНО. Я вообще-то с этим бьюсь уже 3 года. Не первый раз. И всегда так - как только текст кода по Excel-ю превышает какое-то значение - Excel перестает выгружаться. Кто знает в чем дело? Я могу выгрузить API, но хочу разобраться.

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 User Unknown



Вечный Юзер!

ICQ: uu@jabber.cz 

Вопросов: 120
Ответов: 3302
 Профиль | | #1 Добавлено: 19.10.06 17:49
exlApp.Quit делать не пробовал?

Ответить

Номер ответа: 2
Автор ответа:
 Vas



Вопросов: 7
Ответов: 4
 Профиль | | #2 Добавлено: 19.10.06 18:20
Это и есть метод закрытия excel. Что из кода, что юзером - по барабану. Set exlApp=Nothing тоже не помагает. Либо выкидываю львиную долю кода, либо хватаю hwnd и выгружаю API-шкой

Ответить

Номер ответа: 3
Автор ответа:
 iLLyuzor



ICQ: 223685087 

Вопросов: 9
Ответов: 77
 Профиль | | #3 Добавлено: 20.10.06 12:13
Вообще то тема уже много раз поднималась... По другому не получиться, кроме как прибивать процесс через API. VB6 не содержит методов для управления счётчиком ссылок COM объекта, таких как AddRef и Release. Та же проблема наблюдается при написании внешних компонент для 1С на VB6. Вот если бы кто-то из наших API-гуру написал на C функцию, которая бы принимала ссылку на COM объект и управляла счётчиком ссылок, тогда возможно проблема бы отпала, по крайней мере я о таком решении слышал.

Ответить

Номер ответа: 4
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #4 Добавлено: 24.10.06 18:35
Бред. .Quit выгружает ексель навылет, и никогда подобных багов в нормальной программе не было.
ЗЫ Для управления счетчикм ссылок не обязательно писать функцию на C - достаточно заюзать tlbшку с объявленным IUnknown и вызывать Release. Но к данной проблеме отношения это не имеет.

Ответить

Номер ответа: 5
Автор ответа:
 iLLyuzor



ICQ: 223685087 

Вопросов: 9
Ответов: 77
 Профиль | | #5 Добавлено: 25.10.06 12:11
LamerOnLine, можно поподробнее про tlbшку с объявленным IUnknown и вызовом Release.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам