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

Forumthread: Makro ausführen für alle Dateien im Verzeichnis

Makro ausführen für alle Dateien im Verzeichnis
22.03.2006 20:50:10
Wolfgang
Liebe Forumsanhänger,
ich habe ein Makro über den Makrorecorder und das Forum gebastelt, um Dateien
aus einer älteren EDV-Anwendung zu konvertieren (immer Einzelfall - also Datei öffnen - Makro ausführen - speichern).
Auf Grund einer EDV-Umstellung wäre es ideal, ein ganzes Verzeichnis (keine Unterverzeichnisse vorhanden) abzuarbeiten.
Kann mir jemand einen Verweis auf ein Beispiel im Archiv geben ?
(habe einiges an Beiträgen gelesen - geht aber meistens darum Inhaltsverzeichnisse zu erstellen oder Daten einzulesen)
Meine Vorstellung: Verzeichnis wählen - dann ein Makro, welches die Dateien in dem Verzeichnis nacheinander öffnet, mein vorhandenes Makro ausführt und die Datei dann "einfach" wieder speichert.
Bin mir sicher es gibt sowas schon oft - aber nach welchen Begriffen muss ich suchen (Verzeichnis abarbeiten, Dateien abarbeiten haben z. B. nicht geholfen)
Habe auch im Archiv etwas gefunden, bei dem die Dateien nacheinander geöffnet und dann in ein anderes Verzeichnis gespeichert werden.
Ich kann aber keinen Verweis auf ein zweites Makro erkennen bzw. nichts finden,
das mit den Dateien passiert - soweit bin ich leider noch nicht.
Liebe Grüße - Wolfgang
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro ausführen für alle Dateien im Verzeichni
22.03.2006 20:55:44
MichaV
Hallo,
das hört sich ja an, als ob Du keine fertige Lösung präsentiert haben willst.
Mit diesem Prinzip kannst Du alle Dateien eines Verzeichnisses ermitteln:

x=Dir("dein\Verzeichnis\*.txt")
do
'Dein Makro kann nun Datei x öffnen und bearbeiten
'und wieder schließen
x=dir() 'wählt die nächste Datei
loop until x="" 'beendet die Schleife nach der letzten Datei

In den Hilfe- Beispielen zur Dir- Funktion findest Du entsprechende Infos.
Gruß- Micha
PS: Rückmeldung wäre nett.
Anzeige
AW: Makro ausführen für alle Dateien im Verzeichnis
22.03.2006 20:59:54
chris
Hallo wenn ich dich richtig verstanden habe suchst du das.

Sub neu()
Pfad1 = "C:\Excelfiles\"
name1 = Dir(Pfad1, vbDirectory)
Do While name1 <> ""
If name1 <> "." And name1 <> ".." Then
If (GetAttr(Pfad1 & name1) And vbDirectory) = vbNormal Then
If Right(name1, 3) = "xls" Then
Call deinmakro
End If
Debug.Print name1
End If
End If
name1 = Dir
Loop
End Sub


Sub deinmakro()
End Sub

Rückmeldung wäre nett.
gruß Christian
Anzeige
AW:was vergessen.
22.03.2006 21:03:44
chris
Du musst natürlich noch die .xls datei öffnen und dann erst call deinmakro ausfrühren.
Habe ich vorhin vergessen.
Workbooks.Open Pfad1 & name1
Call deinmakro
ActiveWorkbook.Close True
Danke - tolle Hilfe
23.03.2006 19:58:31
Wolfgang
Ihr habt mir sehr geholfen - obwohl ich dem Wahnsinn nahe war
(landete in einer Endlosschleife - auch beim schrittweisen ausführen)
Habe letztendlich die für mich einfachere Idee von Micha angepaßt.
Ich brauche euch ja nur alle paar Monate - klappt aber immer super !
Liebe Grüße - Wolfgang
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Makro für alle Dateien im Verzeichnis ausführen


Schritt-für-Schritt-Anleitung

Um ein Excel-Makro für alle Dateien in einem Verzeichnis auszuführen, kannst du die folgende Schritt-für-Schritt-Anleitung befolgen:

  1. Öffne die VBA-Entwicklungsumgebung:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke im Projektfenster mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)".
    • Wähle "Einfügen" und dann "Modul".
  3. Füge den folgenden Code ein:

    Sub MakroFürAlleDateien()
       Dim Pfad As String
       Dim Datei As String
    
       Pfad = "C:\DeinVerzeichnis\" ' Ändere den Pfad zu deinem Verzeichnis
       Datei = Dir(Pfad & "*.xls") ' Alle Excel-Dateien im Verzeichnis
    
       Do While Datei <> ""
           Workbooks.Open Pfad & Datei
           Call DeinMakro ' Dein bestehendes Makro aufrufen
           ActiveWorkbook.Close True ' Datei speichern und schließen
           Datei = Dir ' Nächste Datei
       Loop
    End Sub
    
    Sub DeinMakro()
       ' Hier kommt dein Makro-Code
    End Sub
  4. Passe den Pfad an:

    • Ändere C:\DeinVerzeichnis\ zu dem Verzeichnis, in dem deine Excel-Dateien liegen.
  5. Makro ausführen:

    • Drücke F5 oder gehe auf "Ausführen" > "Sub/UserForm ausführen".

Häufige Fehler und Lösungen

  • Endlosschleife:

    • Stelle sicher, dass die Bedingung für das Ende der Schleife korrekt ist. Nutze Loop until Datei = "", um sicherzustellen, dass die Schleife ordnungsgemäß endet.
  • Datei nicht gefunden:

    • Überprüfe den angegebenen Pfad. Stelle sicher, dass der Pfad korrekt und die Dateien vorhanden sind.
  • Makro nicht ausgeführt:

    • Vergewissere dich, dass der Name des aufgerufenen Makros (Call DeinMakro) korrekt geschrieben ist.

Alternative Methoden

Falls du eine andere Methode bevorzugst, um ein Excel-Makro für alle Dateien auszuführen, kannst du auch die FileSystemObject-Bibliothek verwenden. Hier ein Beispiel:

Sub AlternativeMakroFürAlleDateien()
    Dim FSO As Object
    Dim Ordner As Object
    Dim Datei As Object
    Dim Pfad As String

    Pfad = "C:\DeinVerzeichnis\"
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set Ordner = FSO.GetFolder(Pfad)

    For Each Datei In Ordner.Files
        If Right(Datei.Name, 4) = ".xls" Then
            Workbooks.Open Datei.Path
            Call DeinMakro
            ActiveWorkbook.Close True
        End If
    Next Datei
End Sub

Praktische Beispiele

Nehmen wir an, dein Makro heißt DatenVerarbeiten. Du kannst den Code so anpassen:

Sub DatenVerarbeiten()
    ' Beispiel: Daten in der ersten Zeile bearbeiten
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Cells(1, 1).Value = "Bearbeitet"
End Sub

Dann rufe DatenVerarbeiten im Hauptmakro auf, um alle Dateien zu bearbeiten.


Tipps für Profis

  • Makros speichern für alle Excel-Dateien:

    • Überlege, deine Makros in einer persönlichen Makroarbeitsmappe (PERSONAL.XLSB) zu speichern, um sie jederzeit verfügbar zu haben.
  • Fehlerbehandlung:

    • Verwende On Error Resume Next, um Fehler zu ignorieren, oder implementiere eine gezielte Fehlerbehandlung, um Probleme während der Ausführung zu protokollieren.
  • Performance optimieren:

    • Deaktiviere Bildschirmaktualisierungen während der Ausführung des Makros mit Application.ScreenUpdating = False und aktiviere sie am Ende wieder.

FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um nur bestimmte Dateien zu bearbeiten? Du kannst die Bedingung innerhalb der Schleife anpassen, um nur Dateien mit bestimmten Kriterien (z.B. Dateiname oder -typ) zu bearbeiten.

2. Was mache ich, wenn ich mehrere Verzeichnisse abarbeiten möchte? Du kannst eine zusätzliche Schleife einfügen, die durch eine Liste von Verzeichnissen iteriert und das Hauptmakro für jedes Verzeichnis ausführt.

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