Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

"For Each File In Files" mit bestimmter Endung...

Forumthread: "For Each File In Files" mit bestimmter Endung...

"For Each File In Files" mit bestimmter Endung...
20.01.2004 08:05:43
Timsäään
Moinsta...
hab mir nen Macro geschrieben, das alle Dateien innerhalb eines Ordners auf bestimmte Zeichenketten hin untersucht und diese dann durch einen neuen Text ersetzt. Das funktioniert soweit auch problemlos, allerdings möchte ich das ganze einschränken indem ich nur alle Dateien mit der Endung *.cpp *.ads und *.adb innerhalb dieses Ordners "aktualisieren" lasse.
Den ganzen Code zu Posten wäre nen bisschen viel aber falls es dafür eine Option gibt müsste die irgendwo in diesem Bereich liegen:
Modul1:
Public Sub makro()
Set fso = CreateObject("Scripting.FileSystemObject")
Dim Folder
Set Folder = fso.GetFolder(Modul2.Ordnername)
Dim Files
Set Files = Folder.Files
Dim Doc As Document
For Each File In Files
ChangeFileOpenDirectory (Modul2.Ordnername)
Set Doc = Documents.Open(File.Name)
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "Original"
.Replacement.Text = "Ersetzt"
...
...
Modul2:
Hier befindet sich die Funktion zur übergabe des ausgewählten Ordners (Ordnername), aufgerufen über eine Shell32 Funktion.
Hat einer ne Idee wie sich das nun auf bestimmte Dateitypen begrenzen lässt???
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: "For Each File In Files" mit bestimmter Endung...
20.01.2004 09:46:02
Timsen
Maaaaaan... keiner der mir helfen konnte aber nach 2 Stunden Recherche und Gedankenarbeit hab ich dann selber nen Weg gefunden: Einfach

For Each File In Files
If Fso.GetExtensionName(File.Name) = "txt" Then
'Arbeitet ab jetzt nur mit Dateien mit der Endung .txt
ChangeFileOpenDirectory (Modul2.Ordnername)
Set Doc = Documents.Open(File.Name)
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "Original"
.Replacement.Text = "Ersetzt"
...
...
End if
Next
Vielleicht braucht ja irgendwer mal ein solches Proggi ;)
Anzeige
;
Anzeige

Infobox / Tutorial

Dateien mit bestimmten Endungen in einem Ordner verarbeiten


Schritt-für-Schritt-Anleitung

Um in Excel VBA alle Dateien in einem bestimmten Ordner zu verarbeiten und dabei nur bestimmte Dateiendungen zu berücksichtigen, kannst du folgende Schritte befolgen:

  1. Erstelle ein neues Modul in deinem VBA-Editor.
  2. Füge den folgenden Code ein:
Public Sub makro()
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")

    Dim Folder As Object
    Set Folder = fso.GetFolder(Modul2.Ordnername)

    Dim Files As Object
    Set Files = Folder.Files

    Dim Doc As Document
    For Each File In Files
        If LCase(fso.GetExtensionName(File.Name)) = "cpp" Or _
           LCase(fso.GetExtensionName(File.Name)) = "ads" Or _
           LCase(fso.GetExtensionName(File.Name)) = "adb" Then

            ChangeFileOpenDirectory (Modul2.Ordnername)
            Set Doc = Documents.Open(File.Name)
            Selection.Find.ClearFormatting
            Selection.Find.Replacement.ClearFormatting

            With Selection.Find
                .Text = "Original"
                .Replacement.Text = "Ersetzt"
                .Execute Replace:=wdReplaceAll
            End With
        End If
    Next File
End Sub
  1. Passe die Modul2.Ordnername Variable an, um den Pfad deines Zielordners zu definieren.
  2. Führe das Makro aus, um die entsprechenden Dateien zu bearbeiten.

Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler 9: Index außerhalb des gültigen Bereichs"

    • Lösung: Überprüfe, ob der Ordnerpfad korrekt ist, und stelle sicher, dass der Ordner existiert.
  • Fehler: "Datei kann nicht geöffnet werden"

    • Lösung: Vergewissere dich, dass die Datei nicht in einem anderen Programm geöffnet ist und dass du über die erforderlichen Berechtigungen verfügst.

Alternative Methoden

Wenn du eine alternative Methode suchst, um mit Dateien in einem Ordner zu arbeiten, kannst du die vba fso.create folder Funktion verwenden, um einen neuen Ordner zu erstellen, in den du bearbeitete Dateien speichern kannst. Hier ist ein Beispiel:

Dim newFolder As Object
Set newFolder = fso.CreateFolder("NeuerOrdner")

Verwende diese Methode, um deine bearbeiteten Dateien zu organisieren.


Praktische Beispiele

Ein praktisches Beispiel für das Arbeiten mit Dateien könnte sein, ein Makro zu erstellen, das alle .txt-Dateien in einem Ordner durchgeht:

For Each File In Files
    If LCase(fso.GetExtensionName(File.Name)) = "txt" Then
        ' Code zum Bearbeiten der .txt Dateien
    End If
Next File

Hier wird nur auf .txt-Dateien zugegriffen, was zeigt, wie du die Logik für andere Endungen anpassen kannst.


Tipps für Profis

  • Nutze LCase oder UCase, um die Dateiendungen unabhängig von der Groß- oder Kleinschreibung zu überprüfen.
  • Kommentiere deinen Code ausführlich, um die Wartbarkeit zu erhöhen.
  • Teste dein Makro in einer sicheren Umgebung, bevor du es in einem produktiven Ordner ausführst.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Dateiendungen gleichzeitig verarbeiten?
Du kannst mehrere Bedingungen in der If-Anweisung verwenden, um verschiedene Endungen zu überprüfen, wie im Beispiel gezeigt.

2. Was mache ich, wenn ich alle Dateien in einem Unterordner überprüfen möchte?
Du kannst die vba for each folder in folder Methode verwenden, um auch die Unterordner zu durchlaufen.

3. Wie kann ich die Leistung meines Makros verbessern?
Optimiere deinen Code, indem du unnötige Operationen vermeidest, und überlege, ob du die Anzahl der geöffneten Dokumente gleichzeitig begrenzen kannst.

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