Liste v. Wörtern suchen und ersetzen u. speichern

Hallo,

vorweg: ich habe schon google und archiv benutzt; leider nicht zielführend.

Ich suche ein Word-Makro, mit dem ich eine lange Liste von defekt geschriebenen Wörtern erstellen kann. Diese Liste möchte ich speichern und dann soll per suchen und ersetzen die Liste abgearbeitet werden.

Bsp. für die Liste
einmabl einmahl
sierb sterb
Adrahamcs Abrahames
idr ihr

In einem neuen Text Dokument möchte ich erst diese Liste per Makro korrigierend abarbeiten lassen, bevor ich per Handkorrektur den Text korrigiere.

Hintergrund:
Fraktur-Texterkennung
Word 2000 (kann ich leider nicht modernisieren)
Win XP Prof.

Wichtig ist natürlich, daß ich diese Liste [MAKRO] speichern kann und erweitern und bearbeiten kann.

Vielen Dank, für die Mühe!

theophas

Hallo,

Ich suche ein Word-Makro, mit dem ich eine lange Liste von
defekt geschriebenen Wörtern erstellen kann. Diese Liste
möchte ich speichern und dann soll per suchen und ersetzen die
Liste abgearbeitet werden.

Bsp. für die Liste
einmabl einmahl
sierb sterb
Adrahamcs Abrahames
idr ihr

Wie soll denn die Liste erstellt / erweitert werden? Guckst du dann einen Text komplett durch und speicherst alles, was dir in die Finger kommt oder wie soll das sein?
Warum benutzt du nicht die AutoKorrektur von Word? Wäre doch recht einfach.
Tipp: wenn man einmal „einmahl“ geschrieben hat dann bleibt es falsch :smile: (oder wolltest du „ein Mahl“ einnehmen?? *g*)

In einem neuen Text Dokument möchte ich erst diese Liste per
Makro korrigierend abarbeiten lassen, bevor ich per
Handkorrektur den Text korrigiere.

Kann jetzt leider keine Makros erstellen aber einfach ne Schleife zum „Tabelle abarbeiten“ machen, zwischen den Docs (Tabelle und Dokument) hin- und herschalten und die „Such/Ersetz-Funktion“ im Makro bemühen. Geht am Einfachsten.

Hintergrund:
Fraktur-Texterkennung
Word 2000 (kann ich leider nicht modernisieren)
Win XP Prof.

Wichtig ist natürlich, daß ich diese Liste [MAKRO] speichern
kann und erweitern und bearbeiten kann.

Einfach als Word-Tabelle (2-spaltig) speichern und gut.

Vielen Dank, für die Mühe!

theophas

Tobi@s

@ T@bias einmahl=Orthographie 18. Jahrhundert
Hallo,

Danke für die Antwort!

Leider kann ich das Makro nicht programmieren (fehlende Intelligenz). Aber ich erstelle die Liste tatsächlich so, wie von Dir vermutet. Mit der Zeit werden es immer mehr items und ich habe - mit der Zeit - immer weniger Arbeit.

Ich weiß, daß einmahl nicht korrekt ist; aber ich muß historisch korrekt die Orthographie des 18. Jahrhunderts transkribieren.

Das Beste und Dank!

Hallo theophas,

ich hab dir mal zwei Makros geschrieben, mit denen sich dein Problem eigentlich lösen lässt. Nur habe ich es so gestaltet dass die Lösungstabelle nicht in einem Word-Dokument sich befindet sondern in einer Text-Datei die du dir selbst (leer) erstellen musst (also einfach eine leere *.txt-Datei erstellen). In den Programmen wird nach dem Dateipfad und dem Namen der Datei gefragt (in meinem Fall „F:\Fehler.txt“. Diesen Pfad und Dateinamen musst du durch deine eigene Datei ersetzen - wo auch immer du sie eben gespeichert hast.

In der Datei werden letztendlich die fehlerhaften Worte und die richtigen Worte gespeichert - in jeder Zeile ein „Fehler-Paar“. Die Worte werden immer in Anführungszeichen geschrieben und durch Komma getrennt. Bsp:

„einmal“,„einmahl“

So hast du die Möglichkeit dir diese „Tabelle“ über die Makros zu bearbeiten (also neue Worte hinzufügen), kannst aber eben auch einfach in die Datei reingehen und selbst alles schreiben - je nach dem was dir lieber ist. Nur eben das Format muss stimmen.
Manchmal ist ja auch ein Fehler beim Eintragen passiert - diesen kannst du nur durch manuelles Ändern in der Datei korrigieren (dazu habe ich kein Programm geschrieben; das lohnt sich nicht).

Die nachfolgenden zwei Programme dienen zum einen dazu neue Worte in die Text-Datei zu speichern bzw. um die Liste in der Datei abzuarbeiten und alle Worte in deinem Word-Dokument zu korrigieren (näheres folgt bei den Programmen).

Ich hoffe ich beschreibe jetzt alles richtig, habe nämlich leider kein Word gerade vor mir…

Um die Programme einzufügen gehe bitte in Word und drücke „Alt + F11“ um den Makro-Editor zu starten. Dort findest du eine dreiteilige Ansicht. Links oben dürfte was stehen von „normal.dot“ (wenn du kein eigenes Dokument geöffnet hast). Wenn dort was anderes steht auf „normal.dot“ klicken damit die Programme auch tatsächlich überall dann auch verfügbar sind. Danach gehst du ins Menü „Einfügen“ und suchst den Befehl „Modul“ worauf sich der rechte (große) Block mit einem „weißen Blatt“ füllt. Dort fügst du beide Programme einfach durch „kopieren“ ein.
Wenn alles richtig ist kannst du das über das Speichern-Symbol jetzt in der normal.dot speichern und wechselst wieder zu Word. In Word erstellst du dir über Extras / Anpassen eine neue Symbolleiste und gehst im selben Menü auf die Registerkarte „Befehle“ und suchst in der linken Spalte nach „Makros“. Dort findest du jetzt beide Makros vor (auf der rechten Seite). Diese fügst du nun als Symbol auf der neuen Symbolleiste ein, bearbeitest evtl. noch die Symbole und kannst die Programme nun einfach per Knopfdruck starten - in welchem Dokument du dich auch immer befindest.

Nun zur Funktion der zwei Programme (Programme beginnen immer mit „Sub Name()“ und hören immer mit „End Sub“ auf):
1: das Wort-Speichern-Programm
in diesem Programm kannst du über ein kleines Eingabefenster (die „Inputbox“) deine falschen Worte und richtigen Worte eintragen und abspeichern. Du musst dort nur das falsche und richtige Wort (durch Komma getrennt !) eingeben und „Ok“ drücken. Hast du vorher ein Wort markiert (das falsche) dann erscheint dieses - mit folgendem Komma - bereits in der InputBox. Du musst dann nur noch „Pfeil rechts“ drücken und das richtige Wort dahinter schreiben. Könnte evtl. schneller gehen. Wenn das Programm merkt dass kein neues Wort eingegeben wurde oder die InputBox leer ist bringt er die InputBox erneut an (er macht also eine Fehlerüberprüfung). Wenn nach dem Komma noch etwas steht (ob das richtig ist, kann der PC natürlich nicht überprüfen *g*) dann speichert er das eingegebene in jener txt-Datei ab die du dort eingegeben hast.
Nach dem speichern bringt er dir erneut die InputBox heran, wo du jetzt weitere Worte eingeben kannst. Dachte, es ist praktisch wenn du viele Worte eingeben musst dass du das Programm nicht ständig starten musst.
Erst wenn du dann auf „Abbrechen“ klickst wird das Programm dann beendet.

  1. das Korrektur-Programm:
    hier arbeitet das Programm schlicht und einfach die txt-Datei Zeile für Zeile ab, nimmt das „falsche Wort“ und ersetzt es über die Suchen-Ersetzen-Funktion durch das „richtige Wort“. Mehr ist da nicht dabei :smile: Und ob dort 5 oder 5000 Einträge in der Datei sind ist auch egal :wink:

Ich habe versucht mal zu den Programmen Erläuterungen immer dazu zu schreiben (das ist alles was nach dem Code hinter dem ’ steht und im Editor grün angezeigt wird). Vielleicht macht es dich ja neugierig und du versuchst selbst mal das, was ich hier geschrieben habe, dir anzuschauen und nachzudenken, was warum passiert. Vielleicht macht es ja Lust später selbst Programme zu schreiben.
Hier jetzt aber erst mal die Programme:

Sub WortKorrektur()
Dim Falsch, Richtig
Open "F:\Fehler.txt" For Input As #1 'öffnet Txt-Datei im Hintergrund zum einlesen
Do While Not EOF(1) 'sucht von Anfang bis Ende alles durch
 Input #1, Falsch, Richtig 'liest jede Zeile in zwei Werten ein
 'nutzt die Ersetzen-Funktion von Word um das ...
 Selection.Find.ClearFormatting
 Selection.Find.Replacement.ClearFormatting
 With Selection.Find
 .Text = Falsch '... falsche Wort durch das ...
 .Replacement.Text = Richtig '... richtige Wort ...
 .Forward = True
 .Wrap = wdFindContinue
 End With
 Selection.Find.Execute Replace:=wdReplaceAll '... überall ...
 '... zu ersetzen
Loop
Close #1 'schließt die Datei wieder (ganz wichtig!)
End Sub

Sub WortSpeichern()
Dim Falsch, Richtig, Temp, Komma
Dim Beenden as Boolean
Erg = ""
Open "F:\Fehler.txt" For Append As #1 'öffnet die Datei um Werte einzufügen

Temp = Selection.Text
Temp = IIf(Asc(Temp) 13 And Len(Temp) 1, Temp & ",", "")
'wenn ein Wort markiert ist fügt er es gleich in die InputBox ein

Do 'arbeitet solange, bis der Nutzer "abbrechen" drückt
 Do 'arbeitet solange, bis der Nutzer ein falsches und richtiges Wort eingegeben hat; dient zur Fehlerüberprüfung
 Erg = InputBox("Bitte geben Sie das falsche und richtige Wort - durch Komma getrennt - ein.", "Eingabe", Temp)
 If StrPtr(Erg) = 0 Then 'Abbrechen gedrückt?
 Beenden = True 'Schalter umlegen
 Exit Do 'aus der Schleife gehen und alles beenden
 End If

 Komma = InStr(1, Erg, ",") 'prüft, ob das Komma vorhanden ist
 If Len(Erg) Komma And Len(Erg) 0 Then 'wenn Komma vorhanden und Text eingegeben ist ...
 Falsch = Left(Erg, Komma - 1) 'auslesen des falschen Wortes
 Richtig = Right(Erg, Len(Erg) - Komma) 'auslesen des richtigen Wortes
 Write #1, Falsch, Richig 'Eintrag in der Datei
 Temp = ""
 Exit Do
 End If
 Loop
Loop Until Beenden = True 'wiederholt solange bis die Variable Beenden den Wert "True" hat

Close #1 (datei schließen !)
End Sub

Ich hoffe, ich habe keine Abschreib-Fehler hier drin. Wenn Fragen sind - einfach anschreiben.

LG Tobias

2 „Gefällt mir“

wow, Tobias,
das ist genau das, was auch ich schon länger suche. Das war mir ein Sternchen wert.
Eine ergänzende Frage:
Kann man dein Makro auch so einsetzen, dass man nicht nur die nackten Zeichenstrings (hab ich das richtig ausgedrückt?), sondern auch die jeweiligen Formatierungen (z.B. Schrägschrift in Dickschrift oder „normal“ in Schrägschrift umwandeln) suchen, korrigieren und ersetzen kann?
Gruß,
lynndinn

Hallo lynndinn

wow, Tobias,
das ist genau das, was auch ich schon länger suche. Das war
mir ein Sternchen wert.

danke :smile:

Eine ergänzende Frage:
Kann man dein Makro auch so einsetzen, dass man nicht nur die
nackten Zeichenstrings (hab ich das richtig ausgedrückt?),
sondern auch die jeweiligen Formatierungen (z.B. Schrägschrift
in Dickschrift oder „normal“ in Schrägschrift umwandeln)
suchen, korrigieren und ersetzen kann?

eigentlich schon. Kannst du mir ein paar konkrete Beispiele sagen was gespeichert werden soll und was wie ersetzt werden soll? Soll es ähnlich deines „Hamburg“-Beispiels sein?

LG Tobias

Gruß,
lynndinn

Hallo Tobias,
ja genau. Ich möchte genau so wie Theophas falschgeschriebene Wörter bearbeiten und ersetzen, aber ich habe auch Wörter, die im Original z.B. kursiv sind, die jetzt normal dargestellt werden sollen.
Beispiele:
Hamburch - Hamburg
Hamburg(kursiv) - Hamburg(normal)
(((Ich weiß nicht, wie ich hier im Text kursiv schreiben kann…))))
Eine Nachfrage noch zu deinen beiden Modulen. Der 1. funzt prima. Aber beim „Suchen/Ersetzen“ kommt die Meldung „Laufzeitfehler ´62´ - Einlesen hinter Dateiende“. Beim Öffnen des Debuggers ist im Makro-Editor eine Zeile gelb hinterlegt: „Input #1, Falsch …“
Leider kenne ich zu wenig VBA, um orten zu können, was da los ist.
Gruß,
lynndinn

Hallo T@bias,

natürlich auch ein Sternchen von mir - habe heute das erste ausgeteilt.

Das Beste!

Aber ist ein selbst erstelltes Benutzerwörterbuch nicht einfacher?

Soweit ich weiß, gehen die Benutzerwörterbücher vor den Hauptwörterbüchern, d.h. einmal würde tatsächlich angemeckert.

Dann könnte man sich die Makroprogrammierung sparen und die normale Rechtschreibprüfung nutzen.

Hallo Tobias,
vielen Dank für deinen Tipp. Bei den falsch geschriebenen Wörtern kann ich mir vorstellen, dass das klappt. Aber man müsste die Korrektur dann wohl jedes einzelne mal machen. Oder wie geht das?
Und was ist bei den Wörtern, wo es allein um die Änderung der Formatierung geht (also aus kursiv z.B. normal machen)? Das würde doch nicht vom Benutzerwörterbuch berücksichtigt werden. Oder? Und dann gleich automatisiert für alle Ersetzungen?
Gruß,
lynndinn

Die Formatänderungen funktionieren einfach mit Tastenkombinationen: Strg+Leertaste für Absatz-Standardformat, Strg+Shift+F für Fett, Strg+Shift+U für Unterstrichen.

Ich finde die kreative Verwendung der eingebauten Features von Word viel interessanter. Deshalb habe ich das Benutzerwörterbuch vorgeschlagen. Die Idee dahinter ist:

a) ich weise einem Text über Extras - Sprache - Sprache bestimmen eine Sprache zu, die sonst nicht vorkommt (z.B. Kroatisch).

b) ich lege ein Wörterbuch für Kroatisch an. Die Wörterbücher tragen in der ersten Zeile eine Sprachenkennung.

c) ich lasse die normale Rechtschreibprüfung laufen. Bei den mit Kroatisch formatierten Textstellen meckert Word natürlich deutsche Wörter an. Man kann sie ersetzen und auch ins Wörterbuch aufnehmen.

Vorteil sind: Man kann mehrsprachige Texte haben - also 18. Jhdt. gemischt mit aktueller Sprache. Und es ist einfach eleganter. Und die eingebauten Mechanismen sind (fast) immer schneller als selbsterstellte (weil VBA eine interpretierte Sprache ist, der eingebaute Kram aber compiliert wurde).

Leider kann ich keine Schritt-für-Schritt-Anleitung liefern. Es ist schon spät, ich hab zwar 'was herumgespielt, aber nichts eindeutiges gefunden.

Schönen Abend einstweilen.

1 „Gefällt mir“

Hallo Markus,
ja, das klingt gut. Ich probier´s mal aus. Vielen Dank,
lynndinn