Была у нас дискуссия на эту тему, называлась "Чистота программного кода: уничтожение объектов"
Так вот, объект херится не из VB. Его херит COM по факту отсутствия указателей на него. Кол-во таких указателей не проверишь. Но, т.к. все указатели создаются программером, то уничтожение объекта будет гарантировано умелым расставлением set = nothing.
К примеру, создаём объект А. После этого создаём объект B. Одним из членов класса А является ссылка на B. Аналогично, один из членов B есть ссылка на А. В этом случае set b=nothing не приведёт к уничтожению объекта. А если сделать ещё и set a=nothing, то возникнет ситуация, когда оба объекта будут существовать в памяти, нно достучаться до них нельзя уже никак. И будут они там до завершения родительского процесса. Решение: предусмотреть в объекте B friend sub, которая обнуляет внутренние указатели B, и только после этого делать set b=nothing и set a.b=nothing.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас