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.
- 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
Und ob dort 5 oder 5000 Einträge in der Datei sind ist auch egal
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