Событие IHTMLElement OnClick - как связать событие с элементом в VBA (ACCESS) - PullRequest
0 голосов
/ 03 апреля 2020

Добрый день. Мне очень нужна помощь Я просмотрел много источников, но пока не нашел конкретного решения 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. Суб метод является ошибкой. Но я все еще не могу связать событие с элементом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...