Administratie-spreadsheet online

Het is zover. Naar aanleiding van mijn eerdere blog publiceer ik mijn administratie-spreadsheet. Best wel spannend vind ik dat. Het is een versie met grotendeels fictieve data die ik geanonimiseerd heb. Maar het gaat uiteraard niet om de data. Het gaat om de opzet en om de Visual Basic macro’s die eronder liggen. Mijn spreadsheets zijn gebouwd met Microsoft Excel 2013 en werken bij mij probleemloos onder Windows 10.

Ieder jaar op 1 januari start ik met een nieuwe spreadsheet. Het is een jaaradministratie. Maar omdat ik tegenwoordig nauwelijks meer wijzigingen aanbreng in mijn grootboekrekeningschema kan ik de sheets makkelijk naast elkaar zetten om de trends over meerdere jaren te zien.

Mijn sheet ondersteunt het importeren van de bestanden van twee banken, Rabobank en ABN AMRO. Dat zijn de twee banken waar ik momenteel een rekening heb. Van Rabobank download ik het CSV bestand, van ABN het TXT bestand. De knop hiervoor vind je op het werkblad ‘Jaarrekening’. Deze versie werkt alleen correct met de Rabo macro. Beide banken plaatsen het boekingsbedrag namelijk in een verschillende kolom, en dat moet je dus even aanpassen in de kolom op het werkblad ‘Grootboek’ waar de totalen opgeteld worden.

Het eerste werkblad ‘Jaarrekening’ geeft een samenvatting van de inkomsten en uitgaven per categorie, en vergelijkt ze ook met budget. Ook zie je hier de tussenrekening in de 900 (inkomsten) en de 9000 (uitgaven) groep. Als ik bijvoorbeeld geld overboek van mijn lopende rekening naar mijn spaarrekening dan is dat geen uitgave, maar een interne verschuiving. Idem met geld wat ik naar mijn beleggingsrekening boek. Dat zie je dus (onder de inkomsten en uitgaven) apart weergegeven. Overigens kijkt mijn spreadsheet zelf tot welke datum er boekingen zijn ingevoerd, dat zie je hier in het veld ‘Bijgewerkt tot’.

De boekingen worden tijdens het Importeren op een tijdelijk werkblad ‘Data’ gezet. Kopiëren naar het werkblad Boekingen (waar alle boekingen voor een jaar dus onder elkaar komen te staan) doe ik nog handmatig. Ik ben te bang dat er een keer wat misgaat als ik dat automatisch doe, en dat mijn administratie daardoor in de soep draait. Met de knop ‘Verwijder Datasheet’ gooi ik het tijdelijke werkblad weer weg als de gegevens correct gekopieerd zijn.

De knop ‘Voorcoderen’ activeert een macro die kijkt naar een aantal kenmerken van de boeking. Voorcoderen werkt op de gegevens op het tijdelijke werkblad ‘Data’. De gegevens waarmee de macro vergelijkt staan op hebt werkblad ‘Voorcoderen’. Als de kenmerken overeen komen dan krijgt de boeking op het werkblad ‘Data’ de grootboekrekening toegewezen die op het werkblad ‘Voorcoderen’ bij de boeking staat. Boekingen die de macro niet herkent moet je handmatig voorzien van een grootboekrekeningnummer. Maar op deze manier wordt gemiddeld ruim 80% van mijn uitgaven automatisch aan de juiste grootboekrekening gekoppeld.

Op het werkblad ‘Grootboek’ zie je de uitgaven per grootboekrekening bij elkaar opgeteld. Hier kun je per rekening ook een budget ingeven. Op basis daarvan (en van de datum tot waar de boekingen zijn bijgewerkt) berekent de spreadsheet hoeveel budget er YTD (Year To Date – tot op dit punt in het jaar) beschikbaar was. Ik werk alleen met jaarbudgetten, niet met maandbudgetten.

Op het werkblad ‘Creditcard’ houd ik gedurende de maand mijn creditcard-uitgaven bij. Zodra de creditcard wordt afgeschreven signaleert mijn spreadsheet dat tijdens het Voorcoderen (melding ‘Er is een credit-card boeking’). Als ik die krijg dan druk ik op de knop ‘Creditcard Verwerken’ op het werkblad ‘Jaarrekening’. De macro zoekt dan de juiste creditcarduitgaven erbij en zet die onder de boekingen op het werkblad ‘Data’. Hij doet dat van boven naar beneden vanaf het werkblad ‘Creditcard’ en stopt zodra het juiste totaalbedrag van de creditcardboeking bereikt is. De creditcardboeking zelf krijgt als grootboekrekeningnummer nul (‘0’), zodat die ook niet meetelt in de uitgaven. Het zijn immers de afzonderlijke betalingen die belangrijk zijn voor het totaalbeeld.

Tenslotte vind je op het werkblad ‘Jaarrekening’ nog de knop ‘Kashbook importeren’. Voor het bijhouden van mijn uitgaven in contant geld (dat zijn er steeds minder) gebruik ik de app ‘Kashbook’ op mijn smartphone. Vanuit Kashbook kun je alle boekingen in CSV format aan jezelf sturen. Die importeer ik en ze worden dan verwerkt op de juiste grootboekrekening, ook weer op een tijdelijk werkblad ‘Data’. Vandaar kun je ze ook weer zelf kopiëren naar het werkblad ‘Boekingen’.

Alle te importeren bestanden lees ik in vanuit mijn ‘Downloads’ directory, die je in kunt stellen op het tabblad ‘Handleiding’. Ook kun je hier instellen in welke directory de importbestanden na verwerking opgeslagen moeten worden, en ook moet je hier de volledige naam van de administratie opgeven. Dat wordt gebruikt in onder andere de import-macro’s.

Met het contant geld, de creditcard-uitgaven en alle boekingen en pinbetalingen vanaf mijn bankrekening heb ik een compleet beeld van al mijn inkomsten en uitgaven.

Hier ga je naar de downloadpagina.

Over een tijdje publiceer ik ook mijn beleggingsadministratie. Die is ietsje ingewikkelder dan deze. Ik hoop vooral dat andere mensen ook hun spreadsheets en macro’s online gaan zetten. Want ik wil graag ook leren van anderen!

Wat vind je van mijn spreadsheet?

Tussendoor-spreadsheet-klooi-blogje

Het was weer eens zover. Eens in de zoveel tijd erger ik me aan mijn beleggingsspreadsheet. Dan duren de verwerkingen van mijn weekrapportjes weer te lang, of doet ‘ie er weer te lang naar mijn zin over om mijn rapportages te laten zien op het scherm. En je kunt wel ieder half jaar een nieuwe laptop met snellere processor en nog meer geheugen kopen, maar dat lost het vaak ook niet op.

Dus eens in de zoveel tijd ga ik weer op zoek naar manieren om mijn macro-code te optimaliseren. Zo ook vandaag.

Allereerst ben ik ervoor gaan zorgen dat de belangrijkste macro’s ongestoord kunnen draaien. Dat zijn de macro’s voor het Importeren en Verwerken van de wekelijkse koersrapporten, voor het bijwerken van mijn Rapportages (voor de liefhebbers: Pivot-tabel) en voor het bijwerken van de Grafieken. Mijn spreadsheet zit vol met functies die zichzelf bijwerken als er iets verandert. En dat vertraagt natuurlijk enorm als ze dat ook doen tijdens de bovengenoemde verwerkingen. Goede tips vond ik hier en met name ook hier.  Die laatste oplossing heb ik vrijwel één-op-één overgenomen.

Aan het begin van mijn code heb ik dus drie variabelen toegevoegd die voor mijn hele spreadsheet gelden.

Public CalcState As Long 
Public EventState As Boolean 
Public PageBreakState As Boolean

Verder heb ik de twee subroutines toegevoegd:

Sub OptimaliseerCode_Begin()

Application.ScreenUpdating = False
EventState = Application.EnableEvents
Application.EnableEvents = False
CalcState = Application.Calculation
Application.Calculation = xlCalculationManual
PageBreakState = ActiveSheet.DisplayPageBreaks
ActiveSheet.DisplayPageBreaks = False

End Sub

En aan het eind moet je dat natuurlijk weer ongedaan maken.

Sub OptimaliseerCode_End() 

ActiveSheet.DisplayPageBreaks = PageBreakState 
Application.Calculation = CalcState 
Application.EnableEvents = EventState 
Application.ScreenUpdating = True 

End Sub

Vervolgens moet ik die code natuurlijk aanroepen in mijn eigen macro’s. Dat doe ik op de volgende manier in elk macro en elke functie die van toepassing is:

'Optimaliseer Code 
Call OptimaliseerCode_Begin 

'Hier staat dan mijn eigen code... 

'Optimaliseer Code 
Call OptimaliseerCode_End

En kijk mij eens een mooie plugin hebben om die code professioneel te publiceren! In de eerste test werden de macro’s voor importeren en verwerken ongeveer vier keer zo snel door deze ingreep. En ook bij het actualiseren van mijn weekrapportage en mijn grafieken was er een behoorlijke sneheidswinst. De nerd in mij is weer dolgelukkig.

Ik ga nog even apart kijken naar de code voor de Pivot. En voor de import overweeg ik om te schakelen van ‘veld voor veld inlezen’ naar ‘in één keer inlezen in een array, en in één keer wegschrijven in een sheet’. Ik lees op diverse plekken dat dat ook veel snelheidswinst op kan leveren. Maar dat is een wat ingrijpender operatie, daar kom ik nog wel op terug.

Ben ik weer te nerdy?

Spreadsheets delen

Geldnerd is dol op spreadsheets. Dat is vrij algemeen bekend. En vooral mijn financiële administratie en beleggingsspreadsheet zitten vol met macro’s die het leven makkelijker maken en het voeren van de administratie terugbrengen tot (bijna) één druk op de knop. Daar ben ik best wel een beetje trots op.

Regelmatig krijg ik de vraag om meer details te geven, of om de spreadsheets te delen. Dat wil ik best doen. Maar ik worstel nog een beetje met de manier waarop. Uiteraard zou ik mijn persoonlijke gegevens verwijderen, maar dat maakt mijn worsteling niet kleiner. Want de spreadsheets zijn helemaal op mijn persoonlijke situatie (en de banken en beleggingswebsites waarmee ik werk) geschreven. En daarnaast moet je behoorlijk wat weten van Excel en Visual Basic om er echt mee aan de slag te kunnen. Kun of wil je dat niet, dan kun je beter met een kant en klaar pakket aan de slag.

Ik kan natuurlijk ook een serie blogjes schrijven, en in ieder bericht een functie toelichten. Hoe is de logica opgebouwd en hoe heb ik het geprogrammeerd, inclusief de Visual Basic code. Maar ja, aan één functie heb je ook weinig. Het is de combinatie en het samenspel die het interessant maakt. En volgens mij zitten veel lezers niet te wachten op nog meer ‘nerdy’ berichtjes met programmacode en technische verhalen. Of toch wel?

Kortom, ik ben er nog niet uit. Dus dacht ik: laat ik het gewoon eens aan jullie voorleggen. Wat lijkt jullie een goede manier om dit te delen? Of kan ik dat maar beter niet doen omdat er dan massaal afgehaakt wordt? Of hebben jullie sowieso geen behoefte aan spreadsheets?

Bedroefd maar dankbaar…

…Voor alles wat hij voor ons betekend heeft… Mijn Backup-server is niet meer. Afgelopen nacht draaide hij zijn laatste backuprondjes, maar daarna ging het lampje uit. En de server ook. Hij had het al een paar dagen moeilijk, daarvan had ik al wat berichtjes gekregen via de beheer-app.

Acht jaar lang trouwe dienst. De laatste drie jaar als Backup-server op een andere locatie. Elke nacht zocht mijn Thuis-server vanuit het Verre Warme Land verbinding met de Backup-server. En elke nacht werden alle wijzigingen doorgestuurd. Zodat mijn informatie ook altijd op een locatie buiten mijn eigen huis staat. Het was een oud beestje, maar hij vervulde een cruciale rol in mijn thuis-ICT. Dat ‘ie er nu niet meer is gaat me ook wel een beetje aan het hart. Ik ben niet erg gehecht aan spullen, maar mijn servers zijn belangrijk voor me. We hebben samen veel meegemaakt, deze server en ik.

Gelukkig heb ik alle gegevens nog wel, dit was niet voor niets de backup-server. De belangrijke dingen staan op mijn computer en op de Thuis-server. Die laatste is ook dubbel uitgevoerd, dus zelfs als er één harddisk kapot gaat staat alles nog op de andere disk (en kan ik gewoon de kapotte disk vervangen, ik heb een reservedisk liggen).

Dus, het leven gaat verder. Ik was al van plan om begin volgend jaar een nieuwe server te kopen. De nieuwere modellen bieden wat functionaliteiten die ik graag wil gebruiken. Zoals het beheren van mijn privé adresboek, zodat ik dat niet in de publieke cloud bij één van de grote datagraaiers hoef te zetten om er overal bij te kunnen. Vandaag is de bestelling de deur uitgegaan.

Heb jij bezittingen waar je erg aan gehecht bent?

Thuisnetwerk…

Je kunt ook overdrijven. Over-engineeren. En dat is misschien wel wat ik aan het doen ben met het netwerk in ons nieuwe huis. Geldnerd is een gadgetfreak, en zo’n verhuizing is voor mij dus de kans om even helemaal los te gaan, en een nieuw, state-of-the-art computernetwerk aan te leggen.

201611-netwerk

Helaas is er bij Geldnerd HQ nog geen glasvezel beschikbaar. We gaan dus voor kabelinternet. Niet de snelste, maar ook niet de langzaamste verbinding. En eigenlijk wil ik een dedicated firewall, maar het lijkt erop dat die nergens meer te vinden zijn voor consumenten. Op dit punt heb ik dus besloten om te gaan voor een dedicated router met goede ingebouwde firewall. Ik gebruik daarbij OpenWrt, het open-source besturingssysteem voor routers. Dat biedt me meer opties en betere ondersteuning dan de gemiddelde leverancier van consumentenrouters.

Op het punt waar de kabel het huis binnenkomt komen dus het modem en de router te staan. De router zorgt ook voor DHCP (verdeling van IP-adressen) en voor beveiliging met de ingebouwde firewall. Ook komt daar één van de de twee WIFI accesspoints te staan. Die ondersteunen de 802.11AC standaard, de nieuwste en snelste draadloze netwerkverbinding. Het huis is behoorlijk groot, maar met twee WIFI-punten zou ik voldoende dekking moeten hebben in het hele huis.

Als ‘backbone’ gebruik ik het stroomnetwerk in het huis. Vanaf de router gaat er dus een kabel naar een powerline-adapter in het stopcontact. Dergelijke powerline-adapters komen er nog op twee plekken in het huis. Eentje bij de media-hoek, voor de netwerkverbinding van de TV en de geluidsapparatuur. En de laatste komt in de werkkamer.

In de werkkamer gaat er een kabel van de powerline-adapter naar een switch. Op die switch worden een aantal apparaten aangesloten:

  1. Een multifunctional, oftewel printer/scanner. Voor Geldnerd vooral om te scannen, voor Vriendin ook om te printen…
  2. Ook hier geluidsapparatuur met netwerkverbinding.
  3. Het tweede WIFI accesspoint.
  4. Mijn server annex personal cloud.
  5. De server van Vriendin.

Op alle drie de netwerklocaties (entry-point, mediahoek en werkkamer) komt een surge-protector, een meerwegstekker met overspanningsbeveiliging. Voor de werkkamer overweeg ik nog een UPS, een ‘reserve-batterij’ voor het geval de stroom uitvalt. Daar neem ik er een die samenwerkt met mijn nieuwe cloudserver. Mocht de stroom uitvallen, dan blijft die server gewoon doordraaien en wordt automatisch netjes afgesloten voordat de batterij leeg is.

Verder ben ik nog aan het kijken naar diverse vormen van domotica voor de automatisering van allerlei huishoudelijke taken. Waarschijnlijk komt er minimaal één beveiligingscamera. En ik denk nog na over verlichting, een slimme thermostaat en andere dingen. Maar dat komt wel. Het netwerk is er in elk geval klaar voor.

Overdrijf ik nu?

De Ping terreur

201610-smartphoneGek werd ik ervan. Ieder gesprek dat ik had, iedere treinreis die ik maakte, ieder moment van de dag. Ping…. Whatsapp, Facebook, e-mail, Breaking News meldingen van allerlei apps. Tientallen keren per dag piept en trilt de gemiddelde smartphone. Niet zelden grijpt de eigenaar iedere keer naar die telefoon om te kijken wat er gebeurt. Maar niet alleen de eigenaar wordt gestoord, ook iedereen in zijn of haar omgeving.

En eerlijk gezegd, mijn eigen telefoon was niet anders. Meestal zette ik ‘m wel op stil, maar dan trilde die nog steeds. En ook bij mezelf merkte ik die neiging om dan tóch even te kijken. Ongeacht waar ik was en met welk gezelschap. En daar begon ik me aan te ergeren. En ik heb 4 van die apparaten, moet ik bekennen. Een zakelijke tablet en smartphone. En een privé tablet en smartphone.

Het was dus tijd voor een ingreep. Minimalisme. Ik heb vrijwel alle meldingen uitgezet. Alleen als ik gebeld wordt, dan gaat er nog een geluid en/of trilt de telefoon. Verder is het stil. Ik bepaal nu zelf wanneer ik op de apparaten kijk, wanneer het mij uitkomt. En dan vertellen de Badge App Icons, de tellertjes rechtsboven in de icoontjes van de apps, mij waar er berichten of nieuwe dingen zijn.

Heerlijk. Wat een rust. Nu de rest van Nederland nog.

Hoe vaak ‘pingt’ jouw telefoon?

Einde van de inhoud

Geen pagina's meer om te laden