Vorig jaar juni schreef ik hoe ik in mijn beleggingsspreadsheet automatisch de valutakoersen bijwerk met behulp van een API. Dat werkt al ruim een jaar probleemloos. Maar afgelopen weekend kreeg ik een foutmelding toen ik mijn wekelijkse beleggingsrapportage verwerkte. Er was iets veranderd in de API.
Inmiddels moet je een abonnement nemen om de API te kunnen gebruiken. Voor kleine gebruikers zoals ik is dat gelukkig gratis. Ik heb me dus als gebruiker geregistreerd, want de functie is erg handig. Maar er zijn ook wijzigingen in de manier waarop je de API moet aanroepen. Daar moest ik dus mijn macro voor aanpassen.
Mijn functie heet GetExchangeRate. Als variabelen krijgt die mee een datum en een valuta-code. Daarmee haalt deze functie bij de API de valutakoers op van de gevraagde valuta op de gevraagde datum (in heden of verleden, uiteraard), tegen de standaard-valuta die ik in mijn spreadsheet heb ingesteld (in mijn geval de Euro). Onderstaand vind je de actuele code van deze macro:
Function GetExchangeRate(Datum As Date, toCurr As String) As Double
Dim TempDate As String
Dim qurl As String
Dim TempOutcome As String
Dim fromCurr As String
TempDate = CStr(Format(Datum, "yyyy-MM-DD"))
fromCurr = "EUR"
qurl = "http://data.fixer.io/" & TempDate & "&access_key=jouweigenkey&base=" & fromCurr & "&symbols=" & toCurr
TempOutcome = Left(Right(Application.WorksheetFunction.WebService(qurl), 10), 8)
If Left(TempOutcome, 1) = ":" Then
TempOutcome = Right(TempOutcome, 7) & "0"
End If
If Mid(TempOutcome, 2, 1) = ":" Then
TempOutcome = Right(TempOutcome, 6) & "00"
End If
If Mid(TempOutcome, 3, 1) = ":" Then
TempOutcome = Right(TempOutcome, 5) & "000"
End If
If Mid(TempOutcome, 4, 1) = ":" Then
TempOutcome = Right(TempOutcome, 4) & "0000"
End If
If Mid(TempOutcome, 5, 1) = ":" Then
TempOutcome = Right(TempOutcome, 3) & "00000"
End If
If Mid(TempOutcome, 6, 1) = ":" Then
TempOutcome = Right(TempOutcome, 2) & "000000"
End If
If Mid(TempOutcome, 7, 1) = ":" Then
TempOutcome = Right(TempOutcome, 1) & "0000000"
End If
GetExchangeRate = CDbl(TempOutcome / 1000000)
End Function
De bovenstaande wijzigingen zijn nog niet doorgevoerd in de versie die je op mijn Downloads-pagina kunt downloaden!
Heb jij wel eens te maken met aanpassingen in jouw spreadsheets?
Mijn spreadsheets hebben geen externe bronnen, het blijft dus een combinatie van kort maandelijks handwerk om een paar variabelen in te vullen (5 minuten hooguit) en formules/grafieken die de rest automatisch bijwerken. Maar ik houd ook een stuk minder bij dan jij doet!
Ik krijg consequent een foutmelding bij het openen van het tabblad “Actual”. Er lijkt iets te missen in de sheet. De foutmelding is : “Can’t open PivotTable source file [Naam v/d Excel]Portfolio’.
Hierdoor werkt de sheet niet helaas.
Toch bedankt voor het delen 🙂
Ik zal er even naar kijken deze week.
Peter, ik heb vanmiddag even de spreadsheet getest zoals ‘ie op mijn website staat, en ik kan de fout hier niet reproduceren. De foutmelding die jij krijgt duidt erop dat er iets mis is met het tabblad Portfolio, dat is waar de Pivot al z’n gegevens vandaan haalt. Is dat bij jou misschien leeg of verwijderd?
Dank voor je reactie. Ik heb het kunnen oplossen door op de Pivot Table te gaan staan, en via het ‘Analyze’ menu, te kiezen voor ‘Change Data Source’, en het pad te verwijderen, zodat alleen nog ‘Portfolio!$A:$W’ overblijft. Eventueel een tip voor mensen die deze fout ook krijgen, Excel schijnt dit vaker te vertonen als een XLS gedownload wordt en in een ander pad (lokaal) wordt gezet.
Goede tip, dankjewel! Ik zal het ook op de Downloads pagina zetten.
Ik wijzig sporadisch wat zaken in mijn rapportages. Dit doe ik echter niet ad-hoc maar ik verzamel wat van mijn eigen wensen. Eens in de zoveel tijd neem ik een uurtje om ze aan te passen.