Suchen und bedingtes Ersetzen

19/07/2011 - 12:21 von Hans List | Report spam
Hallo Leute,

Ich suche ein Makro, das Folgendes leistet:

Wenn ein Paragraph eine bestimmte Zeichenkette A enthàlt:
- Prüfe, ob der Paragraph einen bestimmten Suchbegriff B enthàlt.
- Falls ja: ersetze diesen Suchbegriff B durch einen anderen Begriff
C.

Das Ganze sollte in einer riesigen, tab delimited plain text-Datei
laufen.

Ich könnte mir folgende Lösung vorstellen:

1. Schritt: Öffne die Datei in Word.
2. Schritt: Blende alle Zeilen (1 Zeile = 1 Paragraph) aus, welche die
Zeichenkette A nicht enthalten (Font = hidden).
3. Schritt: Manuelles Suchen und Ersetzen (B > C).
4. Schritt: Entferne das Schriftattribut 'Hidden'.

Es gibt aber bestimmt eine schnellere, elegantere Lösung ;).

Hier noch ein Beispiel:

Die Liste sieht so aus:

Gewindeschraube[tab]screw
Gewindestange[tab]screw
Gewindeschrauben[tab]screws
Gewindestangen[tab]screws

Aufgabe: Die Begriffe 'screw' und 'screws' sollen durch 'bolt' und
'bolts' ersetzt werden, aber nur in Zeilen (Absàtzen) mit
'GewindeSTANGE'.

Besten Dank für Euere Hilfe!

Hans
 

Lesen sie die antworten

#1 Wolfram Jahn
22/07/2011 - 00:11 | Warnen spam
Am 19.07.2011 12:21, schrieb Hans List:
Hallo Leute,

Ich suche ein Makro, das Folgendes leistet:



Hier ist es, aber in Word öffnen ist überflüssig:

-Makro
Sub hans2(A, B, C)
Dim fso As New FileSystemObject
Dim Zeilen, i
Dim Datei

Datei = fso.BuildPath("c:\", "Hans.txt")
Zeilen = Split(fso.OpenTextFile(Datei).ReadAll, vbCrLf)

For i = 0 To UBound(Zeilen)
If InStr(Zeilen(i), A) > 0 Then Zeilen(i) = Replace(Zeilen(i), B, C)
Next i

Datei = fso.BuildPath("c:\", "Hans2.txt")
fso.OpenTextFile(Datei, ForWriting, True).Write Join(Zeilen, vbCrLf)

End Sub

-c:\hans.txt
Gewindeschraube[tab]screw
Gewindestange[tab]screw
Gewindeschrauben[tab]screws
Gewindestangen[tab]screws

-Aufruf in VBA Direktbereich
hans2 "Gewindestange","screw","bolt"

-c:\hans2.txt
Gewindeschraube[tab]screw
Gewindestange[tab]bolt
Gewindeschrauben[tab]screws
Gewindestangen[tab]bolts

-Wolfram-

Ähnliche fragen