Добрый день. Мне очень нужна помощь Я просмотрел много источников, но пока не нашел конкретного решения c для решения моей проблемы.
Я не понимаю технической реализации привязки событий к HTMLElement в среде разработки ACCESS VBA.
Пожалуйста, объясните мне подробно, как связать событие для элементов HTMLElement с объектом InternetExplorer, который я открываю и создаю в его документе. В данном примере это HTMLButtonElement.
Ниже приведен рабочий код в классе модуля:
Option Compare Database
Private WithEvents evtBUT As MSHTML.HTMLButtonElement
Private bd As HTMLBody
'event code
Private Function evtBUT_OnClick() As Boolean
bd.innerHTML = "!ТЕСТ!"
End Function
'begin the programm
Public Sub startProgramm()
Dim doc As HTMLDocument
Dim nodeHTML As IHTMLDOMNode
Dim emtBUT As IHTMLButtonElement
Set doc = IeRun.Document
With doc
Set bd = .body
Set emtBUT = .createElement("button")
With emtBUT
.innerText = "click"
.OnClick = "evtBUT_OnClick" 'событие
With .Style
.Width = "100px"
.Height = "20px"
.TextAlign = "center"
End With
End With
Set nodeHTML = .getElementsByTagName("HTML")(, 0)
Set evtBUT = nodeHTML.insertBefore(emtBUT, nodeHTML.firstChild)
'evtBUT.Click 'testing event
End With
Set doc = Nothing
Set emtBUT = Nothing
Set nodeHTML = Nothing
End Sub
'IE object
Private Function IeRun() As InternetExplorer
Dim ie As New InternetExplorer
With ie
.navigate "about:blank"
.Visible = True
Do
DoEvents
Loop While .ReadyState < READYSTATE_COMPLETE
Set IeRun = ie
End With
Set ie = Nothing
End Function
IE браузер открывается, элемент и кнопки успешно вставляются. Переменные браузера и элемента на уровне модуля. При открытии браузера, конечно, событие не происходит, но в консоли код события успешно работает.
Подскажите, пожалуйста, какой должна быть подпись для кода события? Где должен находиться код события и как его использовать из объекта IE?
Я буду очень признателен.
PS
Не JS, должен использоваться только vba. Консоль в среде ACCESS для отладки. Я имею в виду, что при инициализации кода ошибок нет - объект доступен.
Кстати, в vba событие OnClick использует функцию с возвращаемым значением bool. Суб метод является ошибкой. Но я все еще не могу связать событие с элементом.