Een webquery dynamisch maken met parameters – deel II

In het artikel Aandelenkoersen ophalen met Webquery hebben we de koersen van het afgelopen jaar van het fonds KPN met een webquery van internet opgehaald in Excel. In het vorige artikel hebben we een start gemaakt met het aanpassen van de webquery, zodanig dat je ieder willekeurig fonds kunt ophalen. We hebben de definitie van de statische webquery opgeslagen als ‘iqy’ bestand.

We moeten dit bestand aanpassen om een dynamische webquery mogelijk te maken (waar Excel vraagt om een fondsnaam). Dit kunnen we niet in Excel zelf regelen. We moeten de eerder opgeslagen query file bewerken met (bijvoorbeeld) het kladblok. We krijgen dan het volgende te zien:

webquery onbewerkt

In de regel met de url moeten we nu een aanpassing maken. We willen dat het deel achter het ‘=’-teken wordt vervangen door een fonds dat we zelf opgeven. Dat kan door in dit voorbeeld ‘kpn’ te vervangen door het volgende:

[“Fonds”, “Van welk fonds wil je de koersen zien?”]

Het eerste deel is de naam van de parameter, het tweede deel de tekst die de gebruiker ziet. Onze queryfile ziet er nu zo uit:

query bewerkt

Het is nu het handigst om een nieuwe webquery te definiƫren. Het is in Excel namelijk niet eenvoudig om een eenmaal gemaakte webquery te laten kijken naar een andere webquery file. In Excel 2007 gaat dit nog wel, maar in Excel 2003 is dit lastig (als iemand een goede tip heeft hoe dit te doen in Excel 2003, laat dan even een comment achter).

Echter het maken van een nieuwe query op basis van een bestaande querydefinitiefile is zeer eenvoudig. Gewoon dubbelklikken op het querybestand. Daarna wordt automatisch Excel geopend (als dat al niet het geval was) en vraagt Excel je om het fonds waarvan je de koersen wil opzoeken:

opstarten webquery

In het scherm herken je de boodschap die we voor de gebruiker hadden meegegeven in de definitiefile. Als we hier nu ‘ahold’ invullen, maakt Excel de query.

eindresultaat

Het enige wat we nu nog moeten doen is een aantal regels invoegen voor het toevoegen van een titel, kolomkoppen en kolommen met formules. Als je wilt nalezen hoe je deze formules moet maken, kijk dan hier.

Zoals we de query nu gemaakt hebben moeten we de fondsnaam invullen in een dialoogscherm. Het zou nog mooier zijn als de webquery de fondsnaam ophaalt uit een cel. Ook dit is eenvoudig te regelen. In cel B1 gaan we de fondsnaam invoeren. Om dit wat makkelijk te maken, zorgen we dat de fondsnamen via validatie zichtbaar zijn in een vervolgkeuzelijst (dropdownlist).

validatie voor webquery

Als je niet precies weet hoe je deze vervolgkeuzelijst kunt maken, kijk dan nog eens naar het artikel invoer valideren met behulp van een vervolgkeuzelijst. Nu we de cel met de fondsnamen hebben gemaakt kunnen we een fondsnaam selecteren (bijvoorbeeld Ahold) en de query vernieuwen ([Ctrl]+[Alt]+[F5]).

We krijgen nu weer hetzelfde dialoogvenster met de vraag om een fonds op te geven, te zien.

parameterwaarde opgeven

Echter in plaats van een fonds op te geven, maken we een verwijzing naar cel B4 en door beide opties aan te kruizen vertellen we Excel dat deze bij de volgende vernieuwing opnieuw moet kijken naar de waarde in cel B4 en dat de query vernieuwd moet worden zodra de waarde in cel B4 verandert.

Je kunt het eindresultaat bekijken in onderstaand filmpje.

[kml_flashembed movie=”https://www.zowerktexcel.nl/wp-content/uploads/2009/08/eindresultaat.swf” height=”485″ width=”485″ /]