Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

In Textdatei suchen und ersetzen

Forumthread: In Textdatei suchen und ersetzen

In Textdatei suchen und ersetzen
10.08.2004 10:53:30
Heino
Hallo
Ich habe hier aus dem Forum ein Makro um per VBA in einer Textdatei einen Text zu suchen und durch einen neuen zu ersetzen.
Das Makro funktioniert sehr gut.
Nun möchte ich aber das Makro so verändert haben, das alle Textdateien die in dem Ordner sind verändert werden.Die Textdateien haben alle sehr unterschiedliche Namen mit der Endung .ini
(Die Namen der Dateien sollen gleich bleiben.)
Über Hilfe von Euch würde ich mich sehr freuen.
Hier der Code:

Sub SubstituteSave()
Dim arr() As String
Dim iCounter As Integer
Dim sSource As String, sTarget As String, sTxtA As String
Dim sTxtB As String, sTxt As String, sPath As String
sPath = ThisWorkbook.Path & "\"
sSource = sPath & Range("b1").Value     ' Name der Textdatei
sTarget = sPath & Range("b4").Value     ' Neuer Name der Textdatei
sTxtA = Range("b2").Value               ' alter Text
sTxtB = Range("b3").Value               ' neuer Text
Close
Open sSource For Input As #1
Do Until EOF(1)
Line Input #1, sTxt
If InStr(sTxt, sTxtA) Then
sTxt = Replace(sTxt, sTxtA, sTxtB)
End If
iCounter = iCounter + 1
ReDim Preserve arr(1 To iCounter)
arr(iCounter) = sTxt
Loop
Close
Open sTarget For Output As #1
For iCounter = 1 To UBound(arr)
Print #1, arr(iCounter)
Next iCounter
Close
On Error GoTo ERRORHANDLER
Shell "notepad " & sTarget, vbMaximizedFocus
Exit Sub
ERRORHANDLER:
MsgBox " Job erledigt!"
End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: In Textdatei suchen und ersetzen
10.08.2004 14:03:34
Thomas
Hallo Heino,
ich habe hier mal ein Macro bekommen, damit liste ich alle .xls Dateien in einem
Vereichniss auf ! Du kannst es sicher für die Endung .ini umschreiben. Dann hast du sie in einem Excel Sheet stehen und kannst sie ja aus den einzelnen Zellen her öffnen !
Ich hoffe das hilft dir ein wenig ..

Sub DateienAuflistenfirstxls()
On Error Resume Next
Application.DisplayAlerts = False
Workbooks.Open Filename:="c:\Datei Umbenennen.xls"
Workbooks("Datei Umbenennen.xls").Activate
Dim lngAkt As Integer
Dim rngBereich As Range
Dim rngZelle As Range
Dim TAG As String
x = 1
Cells.Select
Selection.ClearContents
'Const Verzeichnis = "C:\test\"
'verzeichnis = InputBox(("Bitte Pfad eingeben!"), "Verzeichnisse in Tabelle1", "J:\AVAYA-REPORTS\")
verzeichnis = "J:\AVAYA-REPORTS\"
With Application.FileSearch
.NewSearch
.LookIn = verzeichnis
.SearchSubFolders = True ' bei true = mit Unterverzeichnissen
'.FileType = msoFileTypeExcelWorkbooks 'Hier den DateiTyp einstellen!
.FileType = msoFileTypeAllFiles
.Execute
For lngAkt = 1 To .FoundFiles.Count
test = Mid(.FoundFiles.Item(lngAkt), Len(verzeichnis) + 1)
test2 = Right(test, 12)
If test2 = "XX-XX-XX.xls" Then
Cells(x, 1).Value = test
For i = 1 To 150
Name = Mid(test, i, 12)
If Name = "XX-XX-XX.xls" Then GoTo weiter
Next
weiter:
Name = Left(test, i - 1)
TAG = Format(Date - 1, "d")
If TAG < 10 Then
TAG = "0" & Format(Date - 1, "d")
Else
TAG = Format(Date - 1, "dd")
End If
If Format(Date, "dd") = "01" Then
monat = Format(Date - 1, "mm")
Else
monat = Format(Date, "mm")
End If
Jahr = Format(Date, "yy")
Neuername = Name & TAG & "-" & monat & "-" & Jahr & ".xls"
Cells(x, 2).Value = Neuername
x = x + 1
End If
Next lngAkt
End With
Workbooks("Datei Umbenennen.xls").Close True
Application.DisplayAlerts = True
End Sub

Gruß Thomas
Anzeige
AW: In Textdatei suchen und ersetzen
Heino
Hallo Thomas
Danke für Deine Antwort.
Gruß Heino
;
Anzeige
Anzeige

Infobox / Tutorial

In Textdatei suchen und ersetzen


Schritt-für-Schritt-Anleitung

Um in einer Textdatei mit einer bestimmten Endung, wie z.B. .ini, einen Text zu suchen und zu ersetzen, kannst du das folgende VBA-Makro verwenden. Es wird alle Textdateien im angegebenen Verzeichnis bearbeiten, ohne die Dateinamen zu verändern.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Wähle im Menü "Einfügen" die Option "Modul", um ein neues Modul zu erstellen.
  3. Kopiere und füge den folgenden Code in das Modul ein:
Sub SubstituteInTextFiles()
    Dim arr() As String
    Dim iCounter As Integer
    Dim sSource As String, sTarget As String, sTxtA As String
    Dim sTxtB As String, sTxt As String, sPath As String
    Dim fileName As String
    sPath = ThisWorkbook.Path & "\"
    sTxtA = Range("b2").Value ' alter Text
    sTxtB = Range("b3").Value ' neuer Text

    fileName = Dir(sPath & "*.ini") ' Hier wird nach .ini Dateien gesucht.
    Do While fileName <> ""
        sSource = sPath & fileName
        sTarget = sSource ' Neuer Name bleibt gleich
        Close
        Open sSource For Input As #1
        Do Until EOF(1)
            Line Input #1, sTxt
            If InStr(sTxt, sTxtA) Then
                sTxt = Replace(sTxt, sTxtA, sTxtB)
            End If
            iCounter = iCounter + 1
            ReDim Preserve arr(1 To iCounter)
            arr(iCounter) = sTxt
        Loop
        Close
        Open sTarget For Output As #1
        For iCounter = 1 To UBound(arr)
            Print #1, arr(iCounter)
        Next iCounter
        Close
        fileName = Dir ' Nächste Datei
    Loop
    MsgBox "Job erledigt!"
End Sub
  1. Stelle sicher, dass die Zellen B2 und B3 den alten und den neuen Text enthalten.
  2. Schließe den VBA-Editor und führe das Makro aus.

Häufige Fehler und Lösungen

  • Fehler: "Datei nicht gefunden"

    • Überprüfe den Pfad und die Endung der Textdateien. Stelle sicher, dass die Dateien im angegebenen Verzeichnis vorhanden sind und die Endung korrekt ist.
  • Fehler: "Zugriffsverletzung"

    • Stelle sicher, dass die Textdateien nicht geöffnet sind, während das Makro läuft. Schließe alle Instanzen von Notepad oder anderen Texteditoren.

Alternative Methoden

Eine Alternative zum VBA-Makro ist die Verwendung von Power Query, um Textdateien in Excel zu importieren und den Text dort zu bearbeiten. Dies ist besonders nützlich, wenn du eine große Anzahl von Dateien verwalten möchtest.

  1. Gehe zu Daten > Abrufen und transformieren > Aus Datei > Aus Ordner.
  2. Wähle den gewünschten Ordner und importiere die Dateien.
  3. Verwende die Abfrage-Editor-Funktionalität, um Text zu ersetzen.

Praktische Beispiele

Angenommen, du hast mehrere .ini-Dateien im Ordner und möchtest den Text "alt" durch "neu" ersetzen.

  1. Setze in B2 "alt" und in B3 "neu".
  2. Führe das VBA-Makro aus.
  3. Alle Vorkommen von "alt" in den .ini-Dateien werden durch "neu" ersetzt.

Tipps für Profis

  • Verwende Debug.Print innerhalb deiner Schleifen, um den Fortschritt zu überwachen und sicherzustellen, dass die richtigen Dateien bearbeitet werden.
  • Stelle sicher, dass du regelmäßig Backups deiner Dateien machst, bevor du Massenänderungen vornimmst.

FAQ: Häufige Fragen

1. Kann ich das Makro für andere Dateitypen verwenden? Ja, ändere einfach die Zeile fileName = Dir(sPath & "*.ini") auf die gewünschte Endung, z.B. fileName = Dir(sPath & "*.txt").

2. Wie kann ich den alten Text dynamisch ändern? Du kannst die Zellen B2 und B3 im Excel-Blatt anpassen, bevor du das Makro ausführst. So kannst du verschiedene Texte ohne Änderung im Code verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige