Hoe VBA-macros op te slaan en gebruiken in alle werkboeken in Excel?
Er zijn veel situaties waarin je dezelfde VBA-macro herhaaldelijk moet gebruiken in verschillende Excel-werkboeken, bijvoorbeeld voor het automatiseren van repetitieve berekeningen, gegevensopmaak of aangepaste functies zoals het omzetten van getallen in woorden. Een veelvoorkomend probleem is dat macros standaard alleen worden opgeslagen in het werkboek waarin ze zijn gemaakt, wat betekent dat je ze niet direct kunt hergebruiken in nieuwe documenten. Gelukkig biedt Excel verschillende flexibele methoden om een VBA-macro globaal beschikbaar te maken, zodat je de code niet telkens opnieuw hoeft te kopiëren wanneer je een nieuw werkboek start. Deze handleiding biedt uitgebreide instructies voor verschillende benaderingen om ervoor te zorgen dat je VBA-macros gemakkelijk toegankelijk zijn in alle werkboeken, wat je productiviteit en workflow verbetert.
Sla de VBA-code op en gebruik deze in alle werkboeken
Methode Persoonlijk Macro-werkboek
Stel bijvoorbeeld dat je getallen wilt kunnen omzetten naar hun equivalente Engelse woorden met behulp van een aangepaste VBA-code en wilt ervoor zorgen dat deze functie altijd beschikbaar is, ongeacht in welk werkboek je werkt. Met de juiste aanpak kun je je VBA-modules zo opslaan dat ze herbruikbaar zijn wanneer je ze nodig hebt in Excel. Dit is vooral handig voor aangepaste functies of automatisering die je elke keer wilt gebruiken zonder code te dupliceren in meerdere bestanden.
Hiervoor kun je je VBA-code inpakken als een aangepaste Excel-invoegtoepassing. Deze invoegtoepassing kan worden ingeschakeld in Excel en zal je aangepaste functionaliteit blootstellen als een functie die wereldwijd beschikbaar is.
Volg deze stappen:
1. Druk op Alt + F11 in Excel om het venster "Microsoft Visual Basic for Applications" te openen.
2. Klik in de VBA-editor op Invoegen > Module en plak de volgende macro in het nieuw gemaakte modulevenster.
VBA-code: Converteer getallen naar woorden
Function NumberstoWords(ByVal MyNumber)
'Update by ExtendofficeDim xStr As StringDim xFNum As IntegerDim xStrPointDim xStrNumberDim xPoint As StringDim xNumber As StringDim xP() As VariantDim xDPDim xCnt As IntegerDim xResult, xT As StringDim xLen As IntegerOn Error Resume NextxP = Array("", "Thousand ", "Million ", "Billion ", "Trillion ", " ", " ", " ", " ")
xNumber = Trim(Str(MyNumber))
xDP = InStr(xNumber, ".")
xPoint = ""
xStrNumber = ""
If xDP >0 ThenxPoint = " point "
xStr = Mid(xNumber, xDP +1)
xStrPoint = Left(xStr, Len(xNumber) - xDP)
For xFNum =1 To Len(xStrPoint)
xStr = Mid(xStrPoint, xFNum,1)
xPoint = xPoint & GetDigits(xStr) & " "
Next xFNumxNumber = Trim(Left(xNumber, xDP -1))
End IfxCnt =0xResult = ""
xT = ""
xLen =0xLen = Int(Len(Str(xNumber)) /3)
If (Len(Str(xNumber)) Mod3) =0 Then xLen = xLen -1Do While xNumber <> ""
If xLen = xCnt ThenxT = GetHundredsDigits(Right(xNumber,3), False)
ElseIf xCnt =0 ThenxT = GetHundredsDigits(Right(xNumber,3), True)
ElsexT = GetHundredsDigits(Right(xNumber,3), False)
End IfEnd IfIf xT <> "" ThenxResult = xT & xP(xCnt) & xResultEnd IfIf Len(xNumber) >3 ThenxNumber = Left(xNumber, Len(xNumber) -3)
ElsexNumber = ""
End IfxCnt = xCnt +1LoopxResult = xResult & xPointNumberstoWords = xResultEnd FunctionFunction GetHundredsDigits(xHDgt, xB As Boolean)
Dim xRStr As StringDim xStrNum As StringDim xStr As StringDim xI As IntegerDim xBB As BooleanxStrNum = xHDgtxRStr = ""
On Error Resume NextxBB = TrueIf Val(xStrNum) =0 Then Exit FunctionxStrNum = Right("000" & xStrNum,3)
xStr = Mid(xStrNum,1,1)
If xStr <> "0" ThenxRStr = GetDigits(Mid(xStrNum,1,1)) & "Hundred "
ElseIf xB ThenxRStr = "and "
xBB = FalseElsexRStr = " "
xBB = FalseEnd IfEnd IfIf Mid(xStrNum,2,2) <> "00" ThenxRStr = xRStr & GetTenDigits(Mid(xStrNum,2,2), xBB)
End IfGetHundredsDigits = xRStrEnd FunctionFunction GetTenDigits(xTDgt, xB As Boolean)
Dim xStr As StringDim xI As IntegerDim xArr_1() As VariantDim xArr_2() As VariantDim xT As BooleanxArr_1 = Array("Ten ", "Eleven ", "Twelve ", "Thirteen ", "Fourteen ", "Fifteen ", "Sixteen ", "Seventeen ", "Eighteen ", "Nineteen ")
xArr_2 = Array("", "", "Twenty ", "Thirty ", "Forty ", "Fifty ", "Sixty ", "Seventy ", "Eighty ", "Ninety ")
xStr = ""
xT = TrueOn Error Resume NextIf Val(Left(xTDgt,1)) =1 ThenxI = Val(Right(xTDgt,1))
If xB Then xStr = "and "
xStr = xStr & xArr_1(xI)
ElsexI = Val(Left(xTDgt,1))
If Val(Left(xTDgt,1)) >1 ThenIf xB Then xStr = "and "
xStr = xStr & xArr_2(Val(Left(xTDgt,1)))
xT = FalseEnd IfIf xStr = "" ThenIf xB ThenxStr = "and "
End IfEnd IfIf Right(xTDgt,1) <> "0" ThenxStr = xStr & GetDigits(Right(xTDgt,1))
End IfEnd IfGetTenDigits = xStrEnd FunctionFunction GetDigits(xDgt)
Dim xStr As StringDim xArr_1() As VariantxArr_1 = Array("Zero ", "One ", "Two ", "Three ", "Four ", "Five ", "Six ", "Seven ", "Eight ", "Nine ")
xStr = ""
On Error Resume NextxStr = xArr_1(Val(xDgt))
GetDigits = xStrEnd Function
3. Klik nu op het pictogram "Opslaan" linksboven in het venster of druk gewoon op Ctrl + S om het dialoogvenster "Opslaan als" te openen.
4. Voer in het venster "Opslaan als" de gewenste bestandsnaam in het veld "Bestandsnaam" in. Selecteer in het vervolgkeuzemenu "Opslaan als type" zeker Excel-invoegtoepassing (*.xlam).
5. Klik op de knop "Opslaan" om je werkboek op te slaan als een Excel-invoegtoepassingsbestand. Hiermee maak je een herbruikbare invoegtoepassing die op elk moment kan worden ingeschakeld voor elk werkboek.
6. Nadat je hebt opgeslagen, ga terug naar Excel en sluit het werkboek dat je zojuist hebt omgezet in een invoegtoepassing.
7. Open een nieuw of bestaand werkboek waarin je je macro wilt gebruiken. Voer de aangepaste formule in de juiste cel in (bijvoorbeeld in B2):
=NumberstoWords(A2)

8. Ga naar de Ontwikkelaar tab en klik op de Excel-invoegtoepassingen knop in de groep Invoegtoepassingen.
9. Selecteer in het dialoogvenster Invoegtoepassingen dat verschijnt, Bladeren.
10. Zoek en selecteer het eerder opgeslagen invoegtoepassingsbestand en klik daarna op OK.
11. Je aangepaste invoegtoepassing, zoals "Getal naar woorden omzetten", zou nu moeten verschijnen in de lijst met invoegtoepassingen. Zorg ervoor dat deze is aangevinkt en klik op OK om deze in te schakelen.
12. Voer nu de aangepaste functie opnieuw in de doelcel in (zoals B2) en druk op Enter. Je zou moeten zien dat de formule de juiste Engelse woorden retourneert voor het getal.
=NumberstoWords(A2)
13. Om de conversieformule snel toe te passen op meerdere getallen, sleep je de automatische vulgreep van de cel naar beneden om de functie naar andere cellen te kopiëren.

Tips & Opmerkingen:
- Het opslaan van je macro als een invoegtoepassing laat je toe om dezelfde aangepaste functies, code of automatiseringen te gebruiken in al je werkboeken, wat tijd bespaart en consistentie verbetert.
- Als Excel wordt afgesloten of de invoegtoepassing later wordt uitgeschakeld, kunnen functies van de invoegtoepassing tijdelijk "#NAAM?" weergeven totdat de invoegtoepassing opnieuw wordt geladen. Om verwarring te voorkomen, zorg ervoor dat de invoegtoepassing altijd is ingeschakeld in de manager van invoegtoepassingen wanneer nodig.
- Sommige gebruikers zien mogelijk de Ontwikkelaarstab niet standaard. Om deze in te schakelen, klik je met de rechtermuisknop op de lintbalk, kies je "Lint aanpassen" en vink je de optie "Ontwikkelaar" aan.
- Het is een goede gewoonte om invoegtoepassingen in een permanente map op te slaan om te voorkomen dat referenties verloren gaan als bestanden worden verplaatst of hernoemd.
Als je code liever handmatig uitvoert, is dat ook mogelijk en soms handig bij debuggen of voor ad-hocgebruik:
- Je kunt een macro toewijzen aan de Snelle toegangswerkbalk voor één-klik-uitvoering in elk zichtbaar werkboek. Hiervoor klik je met de rechtermuisknop op de Snelle toegangswerkbalk, selecteer je "Snelle toegangswerkbalk aanpassen" en voeg je je macro toe.
- Je kunt ook op Alt + F11 drukken om de VBA-editor te openen, handmatig je macro selecteren en op F5 drukken om de code indien nodig uit te voeren.
Voordelen: Met deze oplossing kun je rijke, herbruikbare macrofunctionaliteit creëren en delen die altijd werkt zolang de invoegtoepassing is ingeschakeld.
Nadelen: Gebruikers moeten eraan denken om de invoegtoepassing te laden en, bij het delen van werkboeken, ook het invoegtoepassingsbestand en functiedetails te delen. Bovendien kunnen invoegtoepassingen niet worden gebruikt in Excel Online.
Een andere zeer praktische manier om ervoor te zorgen dat je favoriete of meest gebruikte macros klaar zijn in elke Excel-sessie, ongeacht welk werkboek is geopend, is door het Persoonlijke Macro-werkboek (PERSONAL.XLSB) te gebruiken. Dit is een speciaal verborgen Excel-bestand dat automatisch wordt geladen elke keer dat Excel wordt gestart, waardoor elke macro die erin is opgeslagen toegankelijk is in alle open werkboeken.
Toepasselijke scenario's: Ideaal voor persoonlijke automatisering, routine-opmaakscripts of hulpprogrammafunties die je niet als formele Excel-invoegtoepassingen hoeft te delen. Macros in PERSONAL.XLSB zijn beschikbaar op je computer, ongeacht welk bestand is geopend.
Voordelen: Macros zijn wereldwijd beschikbaar voor je lokale Excel-profiel en vereisen geen installatie van invoegtoepassingen of extra bestanden.
Nadelen: Macros die op deze manier zijn opgeslagen, kunnen alleen worden gebruikt op de computer en het account waar PERSONAL.XLSB bestaat. Delen met anderen vereist het handmatig exporteren en importeren van modules.
- Om deze methode te gebruiken, moet je eerst een macro opnemen of maken en ervoor zorgen dat deze wordt opgeslagen in het Persoonlijke Macro-werkboek.
Volg deze stappen:
- Open Excel. Klik op de tab Weergave, klik op Macros en selecteer dan Macro opnemen.
- Selecteer in het dialoogvenster onder "Macro opslaan in" Persoonlijk Macro-werkboek. Voltooi het opnemen (je kunt meteen stoppen als het niet nodig is).
- Druk op Alt + F11 om de VBA-editor te openen, waar je een project voor PERSONAL.XLSB zult zien. Voeg hier een nieuwe module in of plak je gewenste macrocode.
- Sla je wijzigingen op. Excel maakt automatisch en onderhoudt het werkboek PERSONAL.XLSB in de opstartmap.
- Macros in PERSONAL.XLSB kunnen vervolgens worden uitgevoerd via het dialoogvenster Macros (Alt + F8), toegewezen aan knoppen op het lint of werkbalk, of aangeroepen vanuit VBA.
Problemen oplossen & Onderhoud: Als macros in PERSONAL.XLSB niet beschikbaar zijn, controleer dan of Excel in de veilige modus wordt geopend of of de macro-beveiligingsinstellingen zijn ingesteld op “Alle macros uitschakelen.” Daarnaast is PERSONAL.XLSB standaard verborgen; als je per ongeluk zonder opslaan afsluit of het verwijdert, moet je mogelijk een nieuwe macro opnemen om het opnieuw te genereren.
C:\Users\[YourUserName]\AppData\Roaming\Microsoft\Excel\XLSTART\PERSONAL.XLSB
Een VBA-code om alle invoegtoepassingen in Excel weer te geven
In Excel kun je mogelijk enkele invoegtoepassingen toevoegen of invoegen om beter om te gaan met gegevens. Zoals we weten, kun je naar het venster Opties gaan om alle invoegtoepassingen te bekijken, maar is er een manier om alle invoegtoepassingen in een blad weer te geven? In deze handleiding biedt het een VBA-code om alle invoegtoepassingen in Excel weer te geven.
Hoe een VBA-macro uit te voeren bij het openen of sluiten van een werkboek?
In dit artikel vertel ik je hoe je de VBA-code kunt uitvoeren terwijl je het werkboek elke keer opent of sluit.
Hoe VBA-code te beveiligen / vergrendelen in Excel?
Net zoals je een wachtwoord kunt gebruiken om werkboeken en werkbladen te beveiligen, kun je ook een wachtwoord instellen om de macro's in Excel te beschermen.
Hoe een tijdvertraging te gebruiken na het uitvoeren van een VBA-macro in Excel?
In sommige gevallen heb je mogelijk een timer-vertraging nodig om een VBA-macro in Excel te activeren. Bijvoorbeeld, wanneer je klikt om een specifieke macro uit te voeren, zal deze pas na 10 seconden effect hebben. Dit artikel laat je een methode zien om dit te bereiken.
Beste Office-productiviteitstools
Versterk je Excel-vaardigheden met Kutools voor Excel en ervaar ongeëvenaarde efficiëntie. Kutools voor Excel biedt meer dan300 geavanceerde functies om je productiviteit te verhogen en tijd te besparen. Klik hier om de functie te krijgen die je het meest nodig hebt...
Office Tab brengt een tabbladinterface naar Office en maakt je werk veel eenvoudiger
- Schakel bewerken en lezen met tabbladen in Word, Excel, PowerPoint in
- Open en maak meerdere documenten in nieuwe tabbladen van hetzelfde venster, in plaats van in nieuwe vensters.
- Verhoog je productiviteit met50% en bespaar dagelijks honderden muisklikken!