Forums Neueste Beiträge
 

suchen von Text aus einer Spalte in einem Ordner mit anderen Datei

29/02/2008 - 08:51 von Alina | Report spam
Hallo Zusammen,
kann man nach Textinhalte aus einer Spalte oder Matrix suchen, die in einer
Text oder Doc-Datei auftauchen?

Beispiel:

Es soll in einem Ordner mit mehreren Dateien gesucht werden, ob eine oder
mehrere Dateien Text aus einer Zelle aus einem bestimmten Arbeitsblatt
beinhalten:

23785
76703
48153

wenn irgend eine Datei aus odner "X" - "23785" oder "76703" oder .
beinhaltet, dann schreibe den Pfad dieser Dateien in dem Arbeitsblatt "Y", in
der Spalte "A"

Frage: Gibt es eine Formel oder ein Visual Basic Code dafür?

Vielen Dank im Voraus

Alina Claussen



Alina
 

Lesen sie die antworten

#1 Peter Schleif
29/02/2008 - 12:31 | Warnen spam
Alina schrieb am 29.02.2008 08:51:

wenn irgend eine Datei aus odner "X" - "23785" oder "76703" oder .
beinhaltet, dann schreibe den Pfad dieser Dateien in dem Arbeitsblatt "Y", in
der Spalte "A"



Hallo Alina.

Schau doch mal, ob Du mit den VBA-Code unten klar kommst. Es müssen
evtl. noch ein paar Konstanten angepasst werden.

Const ordner = "C:"
Const such_blatt = "Tabelle1"
Const such_spalte = 1
Const ergebnis_blatt = "Y"
Const ergebnis_spalte = 1

Beide Blàtter müssen vorhanden sein (wird nicht geprüft).

Falls die gesuchten Daten durchgàngig PLZ sind, kann man die Art der
Suche optimieren, damit tatsàchlich nur 5-stelligen Zahlen gefunden
werden. Sonst findest Du evtl. "23785" auch in "123785678", wenn diese
Zahl zufàllig irgendwo im Text versteckt sein sollte.

Peter


Public Sub suchen()
Dim fso As Object
Dim fp As Object
Dim ts As Object
Dim app As Object
Dim doc As Object
Dim zeile As Integer
Dim filename As String
Dim str As Variant
Dim zelle As Variant
Dim such_bereich As Range

Const ordner = "C:"
Const such_blatt = "Tabelle1"
Const such_spalte = 1
Const ergebnis_blatt = "Y"
Const ergebnis_spalte = 1

On Error GoTo err

If Sheets(such_blatt).Columns(such_spalte).End(xlDown).Row _
65000 Then


MsgBox "Nichts zu suchen: Spalte " & such_spalte & " ist leer"
GoTo err
End If

Set such_bereich = Sheets(such_blatt).Range( _
Sheets(such_blatt).Cells(1, such_spalte), _
Sheets(such_blatt).Columns(such_spalte).End(xlDown))


'Alle Text-Dateien
'
Set fso = CreateObject("Scripting.FileSystemObject")
filename = Dir(ordner & "\*.txt")

While filename <> ""
Application.StatusBar = filename

Set fp = fso.GetFile(ordner & "\" & filename)
Set ts = fp.OpenAsTextStream(1)

str = ts.ReadAll

For Each zelle In such_bereich
If InStr(1, str, zelle.Value, vbTextCompare) Then
zeile = zeile + 1
Sheets(ergebnis_blatt).Cells(zeile, ergebnis_spalte) _
= ordner & "\" & filename
End If
Next

ts.Close
filename = Dir
Wend

'Alle Word-Dateien
'
Set app = CreateObject("Word.Application")
Set fso = CreateObject("Scripting.FileSystemObject")
filename = Dir(ordner & "\*.doc")

While filename <> ""
Application.StatusBar = filename

Set doc = app.Documents.Open(ordner & "\" & filename)

For Each zelle In such_bereich
With app.Selection
.HomeKey Unit:=6
.Find.ClearFormatting
.Find.Text = zelle.Value
If .Find.Execute Then
zeile = zeile + 1
Sheets(ergebnis_blatt).Cells(zeile, ergebnis_spalte) _
= ordner & "\" & filename
End If
End With
Next

doc.Close
filename = Dir
Wend

err:
If Not app Is Nothing Then app.Quit

Set ts = Nothing
Set fp = Nothing
Set fso = Nothing
Set doc = Nothing
Set app = Nothing

End Sub

Ähnliche fragen