13 berichten aan het bekijken - 1 tot 13 (van in totaal 13)
  • Q:
    Bijdrager
    leopard

    Getallen in Word Office 2011 omzetten in woorden

    Hoe kan ik cijfers in Word 2011 omzetten in voluit geschreven letters? v.b. 100 = honderd

    Bijdrager
    Yaris

    Als het om een beperkt aantal getallen gaat die meerdere keren in een Wordbestand voorkomen is de “search and replace” functie de gemakkelijkste manier: “vervang 100 door honderd”.

    Bijdrager
    Jakko Westerbeke

    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:)

    Bijdrager
    leopard

    Weet je soms hoe ik dit kan doen een macro schrijven in Office 2011?

    Bijdrager
    Jakko Westerbeke

    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:)

    Bijdrager
    Yaris

    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 />
     
    Bijdrager
    leopard

    Dit klinkt bij mijn als Chinees, hoe moet ik aan zo’n macro beginnen, heb eens gaan vertalen in google. Is dit niet voor Office’s 2007? In macro’s ben ik nog wat leek !!

    Bijdrager
    Jakko Westerbeke

    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.

    Bijdrager
    leopard

    Ik zal het vanavond of morgen vroeg eens proberen uit te voeren, ik heb het even enorm druk. Moet namelijk nog zowat 750 boeken in scannen voor Bento een hele klus. En den baas is vandaag wat knorrig, waarschijnlijk door de vrieskou.

    Bijdrager
    OMT-fan

    Bijdrager
    leopard

    Ben er eens aan begonnen, en ook gelijk met gestopt. Voor mijn is dit Chinees, ik ben daar een leek in. Ik zou graag een goede omschrijving willen, indien mogelijk om het stap per stap uit te voeren.

    Bijdrager
    Jakko Westerbeke

    Die heb ik je al gegeven volgens mij … Maar goed:

    1. Open de AppleScript-editor;
    2. 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;
    3. Zoek deze regel in het script: set getallen to {{100, “honderd”}, {2, “twee”}, {1, “één”}}
    4. 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);
    5. Open je document in Word;
    6. Voer het script uit door in de AppleScript-editor op de knop “Voer uit” te klikken.
    Bijdrager
    leopard

    Ik heb je tekst even geplakt in page en opgeslagen en tevens afgedrukt. En kunnen weer een poging wagen
    Alvast bedankt voor de verduidelijking.

13 berichten aan het bekijken - 1 tot 13 (van in totaal 13)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.