Invantive App Online maakt het mogelijk om eigen apps aan te bieden. Deze apps kunnen bijvoorbeeld als resultaat JSON of een Excel-bestand hebben met data uit de gekoppelde datacontainers.
In dit voorbeeld wordt een bestaand Invantive Cloud app die Exact Online verkoopcijfers benaderd direct vanuit Excel om de data op te halen en op te slaan in het bestandssysteem. Zie ook App Online module om alle Exact Online verkoopfactuurregels te downloaden.
Deze aanpak is puur illustratief voor het gebruik van VBA met App Online; het is een mijl-op-7-aanpak, aangezien de data ook rechtstreeks met curl
of direct via Power Query opgehaald kan worden.
Deze functionaliteit is alleen beschikbaar onder de Windows-versie van Excel, aangezien Microsoft Excel voor de Mac grote delen van de functionaliteit op Windows ontbeert. Het gebruik van curl
is wel mogelijk op de Mac-versie, maar Power Query is nog niet beschikbaar.
Beveiliging
In dit voorbeeld worden (vertrouwelijke) wachtwoordinformatie onversleuteld opgeslagen. Dit is puur voor demonstratiedoeleinden. Advies is om wachtwoorden telkens opnieuw op te vragen.
Excel download uit Exact Online via Invantive App Online
De eerste stap is het maken van een nieuw Excel-bestand met de volgende inhoud:
Hierbij zijn de cellen C2, C3, C4, C6 en C7 invulbaar. De gegevens in de grijze cellen zijn berekend of vast:
- C10: gekopieerd uit App Online link die terugkomt uit “Copy Link”
- C11: gekopieerd uit App Online link die terugkomt uit “Copy Link”
- C12: gekopieerd uit App Online link die terugkomt uit “Copy Link”
- C13: gekopieerd uit App Online link die terugkomt uit “Copy Link”
- C14: vast
- C15:
=JAAR(C6) & "-" & MAAND(C6) & "-" & DAG(C6)
- C16:
=JAAR(C7) & "-" & MAAND(C7) & "-" & DAG(C7)
- C18:
=C10 & "/apps/"&C11&"/databases/"&C12&"/modules/"&C13&"/?"&B14&"="&C14&"&"&B15&"="&C15&"&"&B16&"="&C16
VBA
De tweede stap is om de Download-button te tekenen en op de klik-gebeurtenis de volgende code in VBA te registreren:
'
' Handle button click for download.
'
Private Sub DownloadButton_Click()
Dim url As String
Dim username As String
Dim password As String
Dim targetFilename As String
url = Range("C18").Value
username = Range("C2").Value
password = Range("C3").Value
targetFilename = Range("C4").Value
Dim objXmlHttpReq As Object
Dim objStream As Object
Set objXmlHttpReq = CreateObject("Microsoft.XMLHTTP")
objXmlHttpReq.Open "GET", url, False, username, password
objXmlHttpReq.send
If objXmlHttpReq.Status = 200 Then
Set objStream = CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = 1
objStream.Write objXmlHttpReq.responseBody
objStream.SaveToFile targetFilename, 2
objStream.Close
End If
End Sub
In de Microsoft Visual Basic for Applications Editor ziet dat er als volgt uit:
Gebruik
De gebruiker kan nu het Excel-sheet openen en de download-knop kiezen. De Invantive App Online module haalt de cijfers uit Exact Online op als een Excel-sheet en slaat ze op in de map c:\temp
als DATA.xlsx
.
Deze Exact Online verkoopdata kan bijvoorbeeld verder verwerkt worden of gebruikt in een draaitabel zoals beschreven in Draaitabel of rapport baseren op gegevens in een ander (extern) Excel-bestand.