im Word Dokument alle Zahlen wo kein Punkt danach kommt in Wort umwandeln.

#6601788
Lesenswert?

Sowas lässt sich super mit VBA (z.B. in Word) programmieren.

-Entwicklertools einblenden

-Makro aufnehmen und ansehen, wie es arbeitet

-Strategie/Algorithmus ausdenken und Makro anpassen

=> Das entspricht dann dem händischen Vorgehen. Das ist etwas 
amateurhaft, genügt aber oft, um den Anfang zu bekommen.

Da kommt dann sowas raus:
1
Sub SuchenErsetzen()
2
'
3
' SuchenErsetzen Makro
4
'
5
'
6
    Selection.Find.ClearFormatting
7
    Selection.Find.Replacement.ClearFormatting
8
    With Selection.Find
9
        .Text = " 1 "
10
        .Replacement.Text = "eins"
11
        .Forward = True
12
        .Wrap = wdFindContinue
13
        .Format = False
14
        .MatchCase = False
15
        .MatchWholeWord = False
16
        .MatchWildcards = False
17
        .MatchSoundsLike = False
18
        .MatchAllWordForms = False
19
    End With
20
    Selection.Find.Execute Replace:=wdReplaceAll
21
    
22
End Sub

Dann überlegt man sich, wie man alle Fälle abdeckt. Man könnte zum 
Beispiel für jede Zahl einen String generieren, beispielsweise mit der 
hier erzeugten Funktion, für das es von Microsoft ein Codebeispiel gibt. 
Die Funktion konvertiert Zahlen in Wörter:

https://support.microsoft.com/de-de/office/konvertieren-von-zahlen-in-w%C3%B6rter-a0d166fb-e1ea-4090-95c8-69442cd55d98

Diese Funktion passt man dann an und implementiert man dann in eine 
For-Schleife:
1
Dim i As Long
2

3
For i = 1 To 1000000
4
    Selection.Find.ClearFormatting
5
    Selection.Find.Replacement.ClearFormatting
6
    With Selection.Find
7
        .Text = " " & i & " "
8
        .Replacement.Text = SpellNumber(i)
9
        .Forward = True
10
        .Wrap = wdFindContinue
11
        .Format = False
12
        .MatchCase = False
13
        .MatchWholeWord = False
14
        .MatchWildcards = False
15
        .MatchSoundsLike = False
16
        .MatchAllWordForms = False
17
    End With
18
    Selection.Find.Execute Replace:=wdReplaceAll
19
Next

Das kann man sich dann nach belieben anpassen, um alle Fälle abzudecken.
Beispielsweise könnte man "For i = 1000000 To 1 Step -1" wählen, wenn 
man unter ".Text" auch Zahlen ohne vorangestellte oder nachgestellte 
Leerzeilen detektieren möchte, jedoch aus 111 kein eins eins eins 
erzeugen möchte, sondern "einhundertelf"

Was ich damit sagen möchte: Sei kreativ. Mit dem Programmieren bist du 
auf dem richtigen Weg.

Gruß Simon

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren