Вы создали «неквалифицированную» ссылку на приложение Excel, которую нельзя освободить с помощью глобальной переменной, предназначенной для VBA, которая не должна использоваться в VB 6.0.
Это неприятный побочный эффект от использования VB 6.0, но это единственная проблема, которую я знаю об использовании VB6, и это легко исправить.
Проблема в вашем случае связана с использованием глобальной переменной ActiveSheet. При использовании VBA это нормально, но при использовании VB 6.0 этого следует избегать, иначе вы создадите приложение Excel, которое не сможете выпустить. Этот подход будет работать нормально с первого раза, но будет вызывать все виды неопределенного поведения в секунду время вашей подпрограммы.
В вашем примере код должен сделать что-то вроде этого:
Sub Macro1()
Dim xlApp As Excel.Application
Set xlApp = New Excel.Application
xlApp.ActiveSheet.OLEObjects.Add(ClassType:="test.test_control.1" _
, Link:=False, DisplayAsIcon:=False).Select
' Then when done:
xlApp.Quit()
xlApp = Nothing
End Sub
Подробное обсуждение того, как с этим обращаться в целом, см .:
Учебник по VB 6.0 - Поиск и восстановление неквалифицированных ссылок
(http://www.xtremevbtalk.com/showthread.php?p=900556#post900556)
Для документации Microsoft по этому вопросу см .:
Сбой автоматизации Excel при повторном запуске кода времени (MSKB 178510)
(http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q178/5/10.asp)
Ошибка или непредвиденное поведение с Office Automation при использовании раннего связывания в Visual Basic (MSKB 319832)
(http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q319832&)
Редактировать : Обратите внимание, что использование тегов html 'a' по каким-то причинам не работало с этими ссылками. Кому-то может понадобиться заглянуть в парсер?