Data downloaden vanuit Excel VBA op Windows vanaf Invantive App Online

Go to English version

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.