PDA

Vollständige Version anzeigen : Wörter einer Liste in einem Dokument markieren


Detlefarndt
18.08.2009, 13:09
Hallo zusammen,

ich bearbeite längere Word-Dokumente die ich nicht selbst erstellt habe.
Ich möchte in diesen Dokumenten Tabu-Wörter aus einer vorliegenden Excel-Tabelle in diesen Dokumenten suchen und dauerhaft markieren. Die Suchen-Funktion in Word ist da wenig hilfreich.

Diese markierten Wörter sollen dann in einem zweiten Schritt manuell ersetzt werden. Dies kann nur manuell geschehen, da die Grammatik beachtet werden muß.

Wer hat eine Idee wie dieses Problem gelöst werden kann?

Viele Grüße
detlefarndt

chris-kaiser
19.08.2009, 10:41
hiho

Die Suchen-Funktion in Word ist da wenig hilfreich.


Ersetzen nehmen! ;)

Suche nach: Tabuwort1
Ersetze Durch :Tabuwort1

und bei Erweitert einfach ein anderes Format einstellen-> alle ersetzen

wenn es sehr viele Wörter sind, wäre eine Programmierung natürlich die bessere Alternative.

Detlefarndt
19.08.2009, 11:48
Danke für die Antwort, aber viel weiter komme ich da nicht. Ich möchte nicht stumpf Tabuwort 1 mit einem anderen Wort ersetzen, sondern zur Not auch Tabuwort 1 vollständig streichen und den Satz entsprechend umformulieren. Mir ist nur daran gelegen die entsprechenden Tabuwörter dauerhaft zu markieren.

Und selbst ein ersetzen muss grammatikalisch korrekt sein, also manuell.

Gruß
detlefarndt

chris-kaiser
19.08.2009, 15:21
hiho


Tabuwort 1 mit einem anderen Wort ersetzen

???
nicht durch ein anderes Wort ersetzen!!!!
ich dachte Dir geht es um das markieren, oder nicht?
bei Suche und Ersetzen das gleiche WORT eintragen
auf Erweitern klicken und Format einstellen

siehe meinen Anhang im ersten Post

peppi
19.08.2009, 15:32
Hallo Chris,

die Anforderung war: Ich möchte in diesen Dokumenten Tabu-Wörter aus einer vorliegenden Excel-Tabelle in diesen Dokumenten suchen und dauerhaft markieren

Und wie ich das sehe, geht das nicht mittels Suchen und Ersetzen, sondern nur mittels vba-Programmierung... Oder habe ich nun etwas falsch verstanden??
<br>

chris-kaiser
19.08.2009, 16:18
Hallo Pepi

wenn es sehr viele Wörter sind, wäre eine Programmierung natürlich die bessere Alternative.

ist mir klar aber warum soll suchen ersetzen nicht gehen??????????????????
das nehme ich recht oft

z.B ich habe des öftern das Vergnügen längere Dokumente (CE Kennzeichnungen) zu verfassen wo der Firmenname xxxx mal vorkomt dieser sollte aber in einem anderen Stil im Dokument vorkommen.

Bearbeiten ersetzen suche nach Firmenname -> ersetzen nach Firmenname
(Beides ist das GLEICHE Wort)

bei Erweitert das gewünschte Format eingestellt und fertischhh

peppi
19.08.2009, 16:25
Hallo Chris,

mir brauchst Du das nicht zu erzählen.... Ich gehe aber mal davon aus, daß der User nicht händisch bei Suchen und ersetzen eintragen will, sondern es sollen die Wörter (und die sind nicht alle gleich, vielleicht sind es ja 2000 Stück) aus der Excel-Liste ausgelesen, im Dokument danach gesucht und markiert werden... Und das müßte meiner Meinung nach per vba gemacht werden, da mir kein Weg bekannt ist, im Suchen-Dialog eine Excel-Liste anzugeben, aus der die zu suchenden Wörter ausgelesen werden sollen... - Zumindest verstehe ich es so. Aber vielleicht sagt ja der User noch was dazu...
<br>

chris-kaiser
19.08.2009, 16:53
Hallo Pepi

Nichts für ungut
ich bezog mich auf :rolleyes:
Und wie ich das sehe, geht das nicht mittels Suchen und Ersetzen

Suchen und Ersetzen ist das Richtige dafür
das noch in ein kleines Makro und fertisch ;)

Const xlUp = -4162
Sub ersetze()
Dim obExcel As Object
Dim obMap As Object
Dim lastrow As Long, i as long
On Error GoTo errHandler
Set obExcel = CreateObject("Excel.application")
'oExcel.Visible = True
Set obMap = obExcel.Workbooks.Open("c:\datenxls.xls") 'anpassen
With obMap.Worksheets(1)
'letzte befüllte zelle in Spalte A ermitteln
lastrow = .Cells(.Rows.Count, 1).End(xlUp).Row
End With
For i = 1 To lastrow
With Selection
.Find.Replacement.Highlight = True
.Find.Text = obMap.Worksheets(1).Cells(i, 1).Value
.Find.Replacement.Text = obMap.Worksheets(1).Cells(i, 1).Value
.Find.Forward = True
.Find.Wrap = wdFindContinue
.Find.Format = True
.Find.Execute Replace:=wdReplaceAll
End With
Next
obExcel.Quit
Set obMap = Nothing
Set obExcel = Nothing
Exit Sub
errHandler:
MsgBox Err.Description
obExcel.Quit
Set obMap = Nothing
Set obExcel = Nothing
End Sub

so in etwa ;)
[edit] den Code noch erweitert damit die Zeilenanzahl in der Mappe selbstständig ermittelt wird.

Detlefarndt
19.08.2009, 17:45
Aber hallo,
a kommt ja Leben in meine Frage!!

Noch einmal zum Verständnis was ich eigentlich machen möchte:

Meine Autoren liefern mir Texte deren Inhalt natürlich verschieden sind. Diese Manuskripte sind schon mal 40 - 50 Seiten lang.
Die Inhalte sollen veröffentlicht werden.
Nun ist es in unserer Zeitschrift so geregelt, das bestimmte Wörter nicht benutzt werden sollen und durch beispielsweise deutsche Begriffe ersetzt werden müssen. Als Beispiel soll konsequent Applikation durch das Wort Anwendung ersetzt werden. Dies geht natürlich prima mit "Suchen und Ersetzen".
Dann gibt es aber auch Wörter die nicht benutzt werden dürfen, sich aber auch nicht einfach ersetzen lassen. Als Beispiel soll hier das Wörtchen "man" dienen. Untersucht einmal in normalen Texten wie oft dieses Wörtchen auftaucht. Es lässt sich nur durch Umbau des kompletten Satzes entfernen.

Von diesen absoluten Tabuworten die sich nicht ersetzen lassen habe ich diese Liste die ständig wächst und die förmlich nach einer Automatisierung zur Markierung schreit.
Mir würde es ausreichen, meine Listenwörter einfach im Text markiert zu finden.
Das kleine Makro werde ich mal testen, dafür schon einmal vielen Dank.

Viele Grüße
detlefarndt

peppi
19.08.2009, 21:15
Hallo Chris,

irgendwie reden wir hier total aneinander vorbei... Letztendlich geht es natürlich mit Suchen & Ersetzen - aber nur mittels vba und nicht mit dem Dialogfenster wie von Dir am Anfang gezeigt... Ich hoffe, daß ich mich jetzt klar ausgedrückt habe :grins: ??
<br>

chris-kaiser
19.08.2009, 21:52
Hallo Pepi

wenn es nicht viele Wörter sind warum sollte das nicht mit "händischem" Suchen Ersetzen gehen, bin leicht verwirrt? ;)

Aber das habe ich doch schon alles im ersten Beitrag von mir in diesem Thread beschrieben!

JayJay47
17.10.2011, 10:18
Hi Chris,
danke für die Antwort. Durch ein Wunder (oder Deine telepathische Fernwirkung) läuft das Makro jetzt Klasse durch!! :-)
Kleiner Schönheitsfehler: Es sucht/markiert nicht ganze Wörter (= ' ',Wort,' '), sondern Textstrings (auch im Wort). Ich suchte nach "Escher" und bekam "bEschert" mit "Escher" im Wort "beschert" in gelb und klein-e in groß-E verwandelt. Wie kann ich das noch ausbügeln?
Danke für einen Tipp!
LG Jay

chris-kaiser
17.10.2011, 11:30
Hi




With Selection.Find
.Replacement.Highlight = True
.Text = obMap.Worksheets(1).Cells(i, 1).Value
.Replacement.Text = obMap.Worksheets(1).Cells(i, 1).Value
.Forward = True
.MatchWholeWord = True
.Wrap = wdFindContinue
.Format = True
.Execute Replace:=wdReplaceAll
End With


das gehört wahrscheinlich noch rein. :)

JayJay47
18.10.2011, 09:12
Wo kommt der neue Code hin?
Es ist ja schon
For i = 1 To lastrow
With Selection
.Find.Replacement.Highlight = True
.Find.Text = obMap.Worksheets(1).Cells(i, 1).Value
.Find.Replacement.Text = obMap.Worksheets(1).Cells(i, 1).Value
.Find.Forward = True
.Find.Wrap = wdFindContinue
.Find.Format = True
.Find.Execute Replace:=wdReplaceAll
End With
Next
da! Anstatt? Dahinter? Davor? :stupid:
Gruß Jay

chris-kaiser
18.10.2011, 09:54
Hi

es geht nur um diese EINE Zeile
;)

.find.MatchWholeWord = True

den restlichen Code habe ich nur deswegen eingefügt damit erkennbar ist wo diese Zeile hinkommen sollte.



Const xlUp = -4162
Sub ersetze()
Dim obExcel As Object
Dim obMap As Object
Dim lastrow As Long, i as long
On Error GoTo errHandler
Set obExcel = CreateObject("Excel.application")
'oExcel.Visible = True
Set obMap = obExcel.Workbooks.Open("c:\datenxls.xls") 'anpassen
With obMap.Worksheets(1)
'letzte befüllte zelle in Spalte A ermitteln
lastrow = .Cells(.Rows.Count, 1).End(xlUp).Row
End With
For i = 1 To lastrow
With Selection
.Find.Replacement.Highlight = True
.Find.Text = obMap.Worksheets(1).Cells(i, 1).Value
.Find.Replacement.Text = obMap.Worksheets(1).Cells(i, 1).Value
.Find.Forward = True
.find.MatchWholeWord = True
.Find.Wrap = wdFindContinue
.Find.Format = True
.Find.Execute Replace:=wdReplaceAll
End With
Next
obExcel.Quit
Set obMap = Nothing
Set obExcel = Nothing
Exit Sub
errHandler:
MsgBox Err.Description
obExcel.Quit
Set obMap = Nothing
Set obExcel = Nothing
End Sub

JayJay47
18.10.2011, 16:57
Yap! Dat isset! :hands: :10points: :winner: :bye: Jay

halweg
19.10.2011, 08:36
Mein Tipp kommt wohl zu spät, aber bei "Tabu-Wörtern" fält mir sofort die Datei ExcludeDictionaryGE0407.lex ein. Die sorgt zumindest schon mal dafür, dass ale "Tabu-Wörter" ein rotes Kringel bekommen.
Man kann ja problemlos eine Excel-Liste in diese Datei einfügen.

Gerhard H
19.10.2011, 13:38
Hallo Halweg,

dein Tipp kommt nie zu spät ;-)
Hat man diese Datei standardmäßig irgendwo? Wie aktiviert / bearbeitet man sie?

halweg
20.10.2011, 10:33
Die Datei liegt bei mir unter ...\Roaming\microsoft\uproof, also dort wo auch benutzer.dic liegt. Sie wird wohl standardäßig verwendet, muss also in den Word-Optionen nicht extra aktiviert werden.
Wird wie eine Textdatei bearbeitet, alle Wörter, die "falsch" sein sollen untereinander. So was ähnliches gibt es ja bei Word schon sehr lange.

Gerhard H
20.10.2011, 11:47
Hallo Halweg,

danke, hab die Datei gefunden. Bei mir lag sie im Ordner C:\Users\Benutzername\AppData\Roaming\Microsoft\UProof. Benutzer.dic heißt bei mir Custom.dic. Ist wohl eine Versionsfrage (hab Word 2010)