#

MS Access: HTML Document und Elemente lesen und verwalten
 
 
Wie kann man in Microsoft Access ein HTML Document verwalten?
 
Unter Microsoft Access kann man das Webbrowser Control in ein Formular einbinden. Dadurch kann man einen Web-Browser in der Datenbank zu einer Webseite navigieren und auch lesen.
Doch zum effektiven Lesen einer Webseite muss der Microsoft vba Code auch HTML verstehen.
Dieses geschieht durch das einbinden der MSHtml Library
 
 
Dadurch kann man wie  in diesem Beispiel eine Webseite lesen und die Eingabe-Felder füllen.

'--< Fill Web-Form >--
Dim hdoc As HTMLDocument
Set hdoc = browser.Document

'----< get Input >----
Dim element As HTMLHtmlElement
Set element = hdoc.getElementById("txtBenutzerkennung")
element.innerText = tbxBenutzerkennung.Value
 
Set element = hdoc.getElementById("pwdPin")
element.innerText = "abc" 'tbxPasswort.Text
'----</ get Input >----
'--</ Fill Web-Form >--

 
 
HTML Object Library
Die HTML Library von Microsoft findet man als Verzeichnis unter:
 
Microsoft HTML Object Library
Unter c:\Windows\SysWOW64\mshtml.tlb

 
Verweis einbinden:
Hierzu unter vba Code Seite von Access (Alt-F11) im Menü unter Extras->Verweise…
Den Verweis hinzufügen.

 
Pfad zur HTML Object Library:
Man findet die HTML Object Library unter dem System/Windows verzeichnis.
Bei einem 64 Bit rechner ist dieser unter C:\Windows\SysWOW64

 
 
 
Im folgenden Screenshot wird in einer Access-Datenbank die Webseite einer Anmeldeseite im Internet geöffnet, die Eingabefelder des Login eingegeben und die Webseite geladen

 
Complettes vba Code Beispiel zum Einlesen einer Webseite

Option Compare Database
Option Explicit On
 
 
'------------------------------< BUTTONS >------------------------------
Private Sub btnLoad_Click()
'------------< btnLoad_Click() >------------
'*download Raiba Belege
'< url >
Dim sURL As String
sURL = tbxBankURL
'</ url >
 
'< Startseite >
Dim browser As webBrowser
Set browser = ctlBrowser.Object

browser.Silent = True
browser.Navigate sURL
'</ Startseite >
 
'< check: webdocument ready >
If wait_for_Document() = False Then
MsgBox "website not loaded in time", vbCritical, "no Website"
Exit Sub
End If
'</ check: webdocument ready >
Dim hdoc As HTMLDocument
Set hdoc = browser.Document

'----< get Input >----
Dim element As HTMLHtmlElement
Set element = hdoc.getElementById("txtBenutzerkennung")
element.innerText = tbxBenutzerkennung.Value

Set element = hdoc.getElementById("pwdPin")
element.innerText = "abc" 'tbxPasswort.Text
'----</ get Input >----
 
'------------</ btnLoad_Click() >------------
End Sub
'------------------------------</ BUTTONS >------------------------------
 
 
Private Function wait_for_Document(Optional ByVal intSeconds As Integer = 20) As Boolean
'------------< wait_for_Document() >------------
Dim bResult As Boolean
bResult = False
 
Dim browser As webBrowser
Set browser = ctlBrowser.Object

'--< lade HTML Document >--
Dim hdoc As HTMLDocument
Set hdoc = Nothing
Do Until (Not hdoc Is Nothing)
DoEvents
Set hdoc = browser.Document
Loop
'--</ lade HTML Document >--
 
'< init loop >
Dim dtStart As Date
dtStart = Now()
Dim intDiff_Seconds As Integer
'</ init loop >
 
'----< Loop: wait complete >----
Do Until hdoc.ReadyState Like "complete"
DoCmd.Echo True, "..warte HDoc.readyState = complete : Zeit=" & intDiff_Seconds & " sec"
DoEvents
Set hdoc = browser.Document
'--< check wait >--
intDiff_Seconds = DateDiff("s", dtStart, Now())
If intDiff_Seconds > intSeconds Then
'< overtime >
bResult = False
Exit Do
'</ overtime >
ElseIf hdoc.ReadyState Like "complete" Then
'< done:complete >
bResult = True
Exit Do
'</ done:complete >
End If
'--</ check wait >--
Loop
'----</ Loop: wait complete >----
 
'< result >
wait_for_Document = bResult
'</ result >
'------------</ wait_for_Document() >------------
End Function
 
 

 
Mobile

.

yesmovies