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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.