De procedure genaamd Helpmij zal het aantal posts op het Helpmij forum nemen en dat plaatsen in cel A1 van het actieve werkblad.
LoadPage is geen ingebouwd commando dat je kan gebruiken, het is een procedure die voor mij handig bleek te zijn om als aparte generieke procedure te beschouwen binnen deze module. Application.Wait in die procedure zal de code telkens 1 seconde uitstellen, zolang de webpagina niet geladen is. Haal die lijn code uit commentaar als je wil.
Nu de pagina geladen is, kunnen we ermee aan de slag gaan. De bewuste pagina bevat mijn gegevens op het forum: nickname (Wigi), woonplaats, leeftijd, aantal posts, … Die laatste moeten we hebben. Dus moeten we eigenlijk te weten komen hoe de webpagina door de makers van de forumsoftware werd opgebouwd. Dit zien we met de Web Developer Toolbar:
Het gaat hier m.a.w. om een <dd> tag binnen een definition list in HTML. Klik hier voor meer achtergrondinformatie omtrent de <dd> tag.
In het algemeen hebben we meerdere mogelijkheden ter beschikking om de informatie op te halen uit HTML-tags:
heeft de tag een bepaalde class, ID of naam, kies dan gewoonlijk deze weg om tot het element te komen;
maak een lus doorheen alle elementen op de pagina van het gewenste type (<dd> hier), en stop indien het juiste werd gevonden. We loopen door een collectie aan gelijksoortige elementen;
Optie 1 is in dit specifieke geval (van webpagina, class en tag) niet mogelijk, dus gebruiken we optie 2 om het item nummer van de <dd> tag te weten komen:
We stellen in de code vast dat er een aantal niet-standaard VBA objecten en eigenschappen gehanteerd worden. Inderdaad, die maken deel uit van een andere library: Microsoft HTML Object Library. Het is nuttig om ook naar die library een referentie te leggen in jouw bestand. Zo is er ook Intellisense bij bijvoorbeeld MSHTML. en kan je in de Object Browser veel informatie vinden over wat er zoal kan gedaan worden. Voor de volledigheid:
De code toont op 2 manieren een lus doorheen de collectie van dd tags. Het item nummer en de tekst van de tag worden in het werkblad weggeschreven ter info. Zoek dan naar het juiste item nummer. Dat nummer 7 gebruikte ik dan in de procedure Helpmij bovenaan de pagina.
In het voorbeeld toon ik dat je ook met een <dl> tag kan werken: <dl> tags omvatten 1 of meerdere <dd> tags.
De procedure voor Worksheet is quasi gelijk aan die voor Helpmij dus die ga ik niet bespreken. Merk op dat we nog geen code schreven voor het in- en uitloggen op een webpagina. Dat gaan we bij wijze van voorbeeld doen voor de forums van Ozgrid en MrExcel. Kijk daarvoor vlug op pagina 3.