Не очень просто, если у вас нет доступа к HTML-содержимому в IE, но вы можете использовать класс VBA, который реализует закрытую переменную «withevents» для захвата ссылки на определенный элемент на странице и который имеет обработчик событий для ответа на события в браузере. Например. в классе "clsHTML":
Private WithEvents el As MSHTML.HTMLInputElement
Public Sub SetElement(t As MSHTML.HTMLInputElement)
Set el = t
End Sub
Private Function el_onchange() As Boolean
Debug.Print "captured change: value = " & el.Value
End Function
В другом коде создайте экземпляр класса и вызовите «SetElement», используя ссылку на элемент на странице в IE:
Dim objHTML As clsHTML 'global variable
Sub TestEvents()
Dim IE As Object
'set up your IE reference....
Set objHTML = New clsHTML
objHTML.SetElement IE.document.getElementById("tester2")
Debug.Print "set capture"
End Sub
В этом случае вы захватываете событие «изменить» в текстовом поле, но другие элементы будут отображать другие события ...
Редактировать: я тестировал это в Excel, но я предполагаю, что нечто подобное будет работать и в Visio.
Edit2: вам, вероятно, было бы гораздо лучше создать форму в Visio, чтобы справиться с этим, чем придерживаться автоматизации IE.