-
Als het om veel verschillende getallen* gaat, en zeker als je dit vaker moet doen, wordt het denk ik zaak een macro te schrijven die dit voor je doet — dit kan tegenwoordig weer in Word 2011 — anders blijf je bezig denk ik.
* Cijfers zijn 0, 1, 2, 3, 4, 5, 6, 7, 8 en 9 (als je tenminste decimaal telt zoals de meeste mensen in Nederland doen); getallen zijn opgebouwd uit één of meer cijfers
Ik ben vanochtend, toen ik m’n antwoord hierboven aan het typen was, eens bezig geweest zo’n macro in elkaar te zetten, maar vanwege dat m’n kennis van Visual Basic een beetje roestig is kwam ik er nog niet helemaal uit. Morgen zal ik eens verder kijken voor je
Ik heb je macro al gevonden op http://wordribbon.tips.net/Pages/T007755_Converting_Numbers_to_Text.html
<br /> Sub BigCardText()<br /> Dim sDigits As String<br /> Dim sBigStuff As String</p> <p> sBigStuff = ""</p> <p> ' Select the full number in which the insertion point is located<br /> Selection.MoveLeft Unit:=wdWord, Count:=1, Extend:=wdMove<br /> Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend</p> <p> ' Store the digits in a variable<br /> sDigits = Trim(Selection.Text)</p> <p> If Val(sDigits) > 999999 Then<br /> If Val(sDigits) <= 999999999 Then<br /> sBigStuff = Trim(Int(Str(Val(sDigits) / 1000000)))<br /> ' Create a field containing the big digits and<br /> ' the cardtext format flag<br /> Selection.Fields.Add Range:=Selection.Range, _<br /> Type:=wdFieldEmpty, Text:="= " + sBigStuff + " \* CardText", _<br /> PreserveFormatting:=True</p> <p> ' Select the field and copy it<br /> Selection.MoveLeft Unit:=wdWord, Count:=1, Extend:=wdExtend<br /> sBigStuff = Selection.Text & " million "<br /> sDigits = Right(sDigits, 6)<br /> End If<br /> End If<br /> If Val(sDigits) <= 999999 Then<br /> ' Create a field containing the digits and the cardtext format flag<br /> Selection.Fields.Add Range:=Selection.Range, _<br /> Type:=wdFieldEmpty, Text:="= " + sDigits + " \* CardText", _<br /> PreserveFormatting:=True</p> <p> ' Select the field and copy it<br /> Selection.MoveLeft Unit:=wdWord, Count:=1, Extend:=wdExtend<br /> sDigits = sBigStuff & Selection.Text</p> <p> ' Now put the words in the document<br /> Selection.TypeText Text:=sDigits<br /> Selection.TypeText Text:=" "<br /> Else<br /> MsgBox "Number too large", vbOKOnly<br /> End If<br /> End Sub<br />
Yaris, deze macro doet het in principe wel maar heeft als nadeel dat je nog met de hand de getallen op moet zoeken en dan de macro uit moet voeren. Ook zie ik eigenlijk totaal niet waar die macro de woorden vandaan haalt, behalve dan “million,” maar dat zal wel m’n gebrek aan VBA-kennis zijn.
Hier een makkelijkere manier, hoop ik:
tell application "Microsoft Word"<br /> activate<br /> set huidigDocument to text object of active document<br /> set getallen to {{100, "honderd"}, {2, "twee"}, {1, "één"}}<br /> repeat with getal in getallen<br /> clear formatting of find object of huidigDocument<br /> execute find (find object of huidigDocument) find text (item 1 of getal) replace with (item 2 of getal) replace replace all<br /> end repeat<br /> end tell
Instructies: kopieer de bovenstaande code, open de AppleScript-editor (in de map /Programma’s/Hulpprogramma’s) en plak de code daarin. Vervang het stukje
{100, "honderd"}, {2, "twee"}, {1, "één"}
door de getallen die je nodig hebt, op dezelfde manier als het hier staat: eerst een { gevolgd door het getal, dan een komma, dan de woorden tussen aanhalingstekens, dan een } en een komma. Dit alles wordt omsloten door {} zoals je boven ook kunt zien.
Belangrijk is om te zorgen dat de getallen in aflopende volgorde staan — als je namelijk begint bij 1 zal bijvoorbeeld “12” eerst vervangen worden door “één2” en daarna de 2 daarin door “twee” zodat je “ééntwee” krijgt in plaats van “twaalf.”
Wanneer je dit gedaan hebt open je je document in Word en klik je in de AppleScript-editor op de knop “Voer uit” om de getallen te vervangen. Mocht dit niet goed uitpakken, dan kun je in Word altijd ?Z gebruiken om het weer te herstellen.
Die heb ik je al gegeven volgens mij … Maar goed:
- Open de AppleScript-editor;
- Plak daar het script in dat in m’n bericht hierboven staat — dat is het stuk dat begint met tell application “Microsoft Word” en eindigt met end tell;
- Zoek deze regel in het script: set getallen to {{100, “honderd”}, {2, “twee”}, {1, “één”}}
- Voeg alle getallen toe die je wilt zoeken door ze ertussen te typen op dezelfde manier — wil je ook “12” vervangen door “twaalf” dan wordt de regel set getallen to {{100, “honderd”}, {12, “twaalf”}, {2, “twee”}, {1, “één”}} enz. (zorg ervoor dat je dit altijd van hoog naar laag doet, en niet andersom: dus niet 12 toevoegen na 1, want dan worden eerst alle 1’s vervangen en kan het script dus geen “12” meer vinden);
- Open je document in Word;
- Voer het script uit door in de AppleScript-editor op de knop “Voer uit” te klikken.
Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.