Проект Excel VBA не закрывается
У меня есть надстройка COM, в которой я работаю с событиями Excel. Я нажимаю Alt F11
для просмотра проекта VBA, связанных с Excel. Однако при закрытии книги проект Excel VBA в обозревателе проектов также не закрывается.
Он закрывается нормально, когда мой COM-надстройка не установлена. Что происходит, и что я должен делать по-другому?
2 ответа
У меня была похожая проблема в моей COM-надстройке (C# / VSTO):
- Вы должны освободить все ссылки на книги в вашем коде, когда книга закрыта, и установить для них значение null.
- Если вы храните внутреннюю ссылку на книгу, всегда используйте WeakReference, чтобы сборщик мусора выполнял свою работу.
В моем случае у меня была Windows.Forms.Tree из всех рабочих книг в настраиваемой области задач. Указанные объекты Workbook были сохранены в TreeNode.Tag. После того, как я закрыл книгу, дерево обновлялось событиями, но в это время я уже сгенерировал то, что я назвал Рабочей книгой VBA "призрак". Я решил эту проблему, заменив объекты Workbook-Object в тегах TreeNode на Workbook.FullName-String (для ссылки на них позже).
Надеюсь, это поможет, Йорг
Проблема была с объектами книги, остающимися в памяти. После очистки объектов в событии деактивации рабочей книги проект VBA закрывается, когда я закрываю рабочую книгу.
Смотрите это: http://social.msdn.microsoft.com/Forums/en-US/vsto/thread/377fbebc-021d-4e48-aaef-d4658cc221b3
Спасибо