Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1364to1368
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

In Dateien suchen und ersetzen, einschl. Unterverz

In Dateien suchen und ersetzen, einschl. Unterverz
11.06.2014 15:52:50
guebla
Hallo Leute!
ich suche eine Routine die mir in den Excel-Dateien Inhalte (Wort) sucht und dieses dann durch _
ein anderen Inhalt (Wort) ersetzt. Beim Stöbern im Forum habe ich folgende VBA-Routine _ gefunden:

Sub DateienÄndern()
Dim blnGeändert As Boolean
Dim lngZähler As Long
Dim rngZelle As Range
Dim strDatei As String
Dim strSuche As String
Dim strErsatz As String
Dim strZelle As String
Dim strPfad As String
Dim wsTab As Worksheet
strPfad = ActiveSheet.Range("F3").Value
strSuche = ActiveSheet.Range("F1").Value
strErsatz = ActiveSheet.Range("F2").Value
ChDrive Left(strPfad, 3)
ChDir strPfad
strDatei = Dir("*.xl*", vbNormal)
Columns("A:B").ClearContents
Application.ScreenUpdating = False
Do While strDatei  ""
If strDatei  ThisWorkbook.Name Then
Workbooks.Open strPfad & "\" & strDatei
blnGeändert = False
For Each wsTab In ActiveWorkbook.Worksheets
Set rngZelle = wsTab.Cells.Find(strSuche)
If Not rngZelle Is Nothing Then
strZelle = rngZelle.Address
Do
rngZelle.Replace What:=strSuche, _
Replacement:=strErsatz, _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
MatchCase:=False
blnGeändert = True
Set rngZelle = wsTab.Cells.FindNext(After:=rngZelle)
If rngZelle Is Nothing Then Exit Do
Loop While rngZelle.Address  strZelle
End If
Next wsTab
ActiveWorkbook.Close True
If blnGeändert Then
lngZähler = lngZähler + 1
Cells(lngZähler, 1).Value = strDatei
Cells(lngZähler, 2).Value = Date
End If
End If
strDatei = Dir()
Loop
Application.ScreenUpdating = False
Columns("A:B").AutoFit
End Sub

Diese Routine sucht und ersetzt aber nur im aktuellen Verzeichnis. Da ich mehrere Unterverzeichnisse habe, such ich eine Möglichkeit, die obige Routine so zu ändern, dass sie auch die Unterverzeichnisse mit überarbeitet.
Kann mir hier bitte wer helfen?

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: In Dateien suchen und ersetzen, einschl. Unterverz
11.06.2014 17:26:07
Daniel
Hi
probiers mal so.
Gestartet werden muss das erste Makro.
Dieses ermittelt zunächst die Unterordner des angegebenen Pfads und führt dann ein Ursprungsmarko mit all diesen Verzeichnissen aus:
Option Explicit
Sub UV_Ermitteln_und_DateienÄndern()
Dim Ordner As String
Dim OrdnerListe() As String
Dim O As Long
ReDim OrdnerListe(1 To 1)
OrdnerListe(1) = ActiveSheet.Range("F3").Value
O = 1
Do Until O > UBound(OrdnerListe)
Ordner = Dir(OrdnerListe(O) & "\*", vbDirectory)
Do While Ordner  ""
If Left(Ordner, 1)  "." Then
If (GetAttr(OrdnerListe(O) & "\" & Ordner) And vbDirectory) = vbDirectory Then
ReDim Preserve OrdnerListe(1 To UBound(OrdnerListe) + 1)
OrdnerListe(UBound(OrdnerListe)) = OrdnerListe(O) & "\" & Ordner
End If
End If
Ordner = Dir
Loop
O = O + 1
Loop
For O = 1 To UBound(OrdnerListe)
Call DateienÄndern(OrdnerListe(O))
Next
End Sub
Sub DateienÄndern(strPfad As String)
Dim blnGeändert As Boolean
Dim lngZähler As Long
Dim rngZelle As Range
Dim strDatei As String
Dim strSuche As String
Dim strErsatz As String
Dim strZelle As String
Dim wsTab As Worksheet
strSuche = ActiveSheet.Range("F1").Value
strErsatz = ActiveSheet.Range("F2").Value
ChDrive Left(strPfad, 3)
ChDir strPfad
strDatei = Dir("*.xl*", vbNormal)
Columns("A:B").ClearContents
Application.ScreenUpdating = False
Do While strDatei  ""
If strDatei  ThisWorkbook.Name Then
Workbooks.Open strPfad & "\" & strDatei
blnGeändert = False
For Each wsTab In ActiveWorkbook.Worksheets
Set rngZelle = wsTab.Cells.Find(strSuche)
If Not rngZelle Is Nothing Then
strZelle = rngZelle.Address
Do
rngZelle.Replace What:=strSuche, _
Replacement:=strErsatz, _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
MatchCase:=False
blnGeändert = True
Set rngZelle = wsTab.Cells.FindNext(After:=rngZelle)
If rngZelle Is Nothing Then Exit Do
Loop While rngZelle.Address  strZelle
End If
Next wsTab
ActiveWorkbook.Close True
If blnGeändert Then
lngZähler = lngZähler + 1
Cells(lngZähler, 1).Value = strDatei
Cells(lngZähler, 2).Value = Date
End If
End If
strDatei = Dir()
Loop
Application.ScreenUpdating = False
Columns("A:B").AutoFit
End Sub
Gruß Daniel

Anzeige
AW: In Dateien suchen und ersetzen, einschl. Unterverz
13.06.2014 08:06:01
guebla
Hi Daniel,
recht herzlichen Dank für Deine Hilfe. Deine Erweiterung scheint auch zu funktionieren. Nun habe ich noch ein Problem. In den Verzeichnissen liegen auch Excel-Dateien die geschützt sind. Diese Dateien müssen auch nicht bearbeitet werden. Die VBA-Routine sollte diese Dateien einfach überspringen. Könnte man die Routine so weit abändern?

327 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige