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

Forumthread: vba Ordner auf leer prüfen

vba Ordner auf leer prüfen
14.01.2014 18:55:52
Uwe
hallo Leute,
ich benötige Hilfe.
aus einem beliebigen Ordner werden Daten kopiert,
ist der Ordner nicht vorhanden, wird er angelegt.
Problem:
wenn dieser Ordner leer ist soll eine Meldung kommen und ein Abbruch erfolgen,
ansonsten weiter im VBA
kann mir jemand helfen?

Sub kopieren()
Dim ziel As String, versuch As String, quelle As Variant, sht As String, i As Integer
versuch = ActiveWorkbook.Path & "\Versuche"
ziel = ThisWorkbook.Name
ChDrive Left(ActiveWorkbook.Path, 1) 'aktuelles LW aktivieren
If Dir(versuch, vbDirectory) = "" Then 'falls Unterordner "Versuche" nicht existiert ->  _
anlegen
MkDir (versuch)
MsgBox "Es wurde ein Ordner für die Versuche angelegt"
End If
'---- hier vielleicht die Abfrage?
ChDir versuch 'in aktuellen Pfad wechseln
quelle = Application.GetOpenFilename("Excel-Dateien (*.xls*),*.xls*", , "Datei auswählen",  _
MultiSelect:=False)
Workbooks.Open quelle
sht = ActiveWorkbook.Name
For i = 1 To Worksheets.Count 'Tabellen kopieren in Zieldatei hinter Tabelle 3 einfügen
Workbooks(sht).Sheets(i).Copy After:=Workbooks(ziel).Sheets(i + 2)
Next i
Workbooks(sht).Close
For i = 4 To Worksheets.Count 'Tabellen nach Position in Zieldatei benennen (nummerieren)
Worksheets(i).Activate
ActiveSheet.Name = i
Next i
Worksheets(1).Activate 'Tabellennamen in Tabelle "Start" ab Zelle A3 als Liste eintragen
For i = 3 To ActiveWorkbook.Sheets.Count
Sheets("Start").Range("A" & i) = Sheets(i).Name
Next
End Sub

danke Uwe

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: vba Ordner auf leer prüfen
14.01.2014 19:33:12
Uduuh
Hallo,
if dir(versuch &"\*")="" then
msgbox "ordner leer"
exit sub
end if
Gruß aus’m Pott
Udo

AW: vba Ordner auf leer prüfen
15.01.2014 08:48:02
Uwe
Hallo Udo,
vielen Dank, genau so geht's.
Ich hatte bei meinen zig Versuchen den Backslash vergessen und es nicht gesehen.
es grüßt
Uwe
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA: Ordner auf Leer prüfen und Daten kopieren


Schritt-für-Schritt-Anleitung

Um zu prüfen, ob ein Ordner leer ist, bevor Du mit dem Kopieren von Daten fortfährst, befolge diese Schritte:

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Neues Modul erstellen: Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Code einfügen: Kopiere den folgenden Code in das Modul:
Sub kopieren()
    Dim ziel As String, versuch As String, quelle As Variant, sht As String, i As Integer
    versuch = ActiveWorkbook.Path & "\Versuche"
    ziel = ThisWorkbook.Name
    ChDrive Left(ActiveWorkbook.Path, 1) 'aktuelles LW aktivieren

    If Dir(versuch, vbDirectory) = "" Then 'falls Unterordner "Versuche" nicht existiert
        MkDir (versuch)
        MsgBox "Es wurde ein Ordner für die Versuche angelegt"
    End If

    ' Hier die Abfrage hinzufügen
    If Dir(versuch & "\*") = "" Then
        MsgBox "Dieser Ordner ist leer"
        Exit Sub
    End If

    ChDir versuch ' in aktuellen Pfad wechseln
    quelle = Application.GetOpenFilename("Excel-Dateien (*.xls*),*.xls*", , "Datei auswählen", MultiSelect:=False)
    Workbooks.Open quelle
    sht = ActiveWorkbook.Name

    For i = 1 To Worksheets.Count ' Tabellen kopieren
        Workbooks(sht).Sheets(i).Copy After:=Workbooks(ziel).Sheets(i + 2)
    Next i

    Workbooks(sht).Close
    For i = 4 To Worksheets.Count ' Tabellen umbenennen
        Worksheets(i).Activate
        ActiveSheet.Name = i
    Next i

    Worksheets(1).Activate ' Tabellennamen auflisten
    For i = 3 To ActiveWorkbook.Sheets.Count
        Sheets("Start").Range("A" & i) = Sheets(i).Name
    Next
End Sub
  1. Makro ausführen: Schließe den VBA-Editor und führe das Makro aus.

Häufige Fehler und Lösungen

  • Fehler: "Das Verzeichnis ist nicht leer" wird nicht angezeigt.

    • Lösung: Stelle sicher, dass der Verzeichnis-Pfad korrekt ist und das Backslash (\) am Ende des Pfades hinzugefügt wurde.
  • Fehler: Ordner leer, obwohl Daten vorhanden.

    • Lösung: Überprüfe, ob die Dateinamen im Zielordner tatsächlich vorhanden sind und keine versteckten Dateien existieren.

Alternative Methoden

Eine alternative Methode, um zu prüfen, ob ein Ordner leer ist, ist die Verwendung von FileSystemObject. Hier ist ein Beispiel:

Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")

If fso.GetFolder(versuch).Files.Count = 0 Then
    MsgBox "Der Ordner ist leer."
    Exit Sub
End If

Dieser Code verwendet die FileSystemObject, um die Anzahl der Dateien im Ordner zu zählen.


Praktische Beispiele

  1. Ordner erstellen und prüfen:

    • Wenn der Ordner "Daten" nicht existiert, wird er erstellt, und es wird geprüft, ob er leer ist.
  2. Daten aus einem leeren Ordner kopieren:

    • Verwende das oben genannte Makro, um sicherzustellen, dass Du nur aus nicht-leeren Ordnern kopierst.

Tipps für Profis

  • Verwendung von Error Handling: Implementiere On Error Resume Next, um sicherzustellen, dass Dein Makro nicht aufgrund eines Fehlers abbricht.

  • Dynamische Ordnernamen: Erstelle eine Funktion, die den Ordnernamen basierend auf dem Datum oder anderen Kriterien anpasst.

  • Regelmäßige Backups: Stelle sicher, dass Du regelmäßige Backups Deiner Daten machst, bevor Du mit dem Kopieren beginnst.


FAQ: Häufige Fragen

1. Wie prüfe ich, ob ein Ordner vorhanden ist?
Du kannst die Dir-Funktion verwenden, um zu prüfen, ob ein Ordner existiert. Beispiel:

If Dir(versuch, vbDirectory) = "" Then
    MsgBox "Der Ordner existiert nicht."
End If

2. Was kann ich tun, wenn mein Ordner leer ist?
Wenn der Ordner leer ist, kannst Du eine entsprechende Meldung anzeigen lassen und das Makro abbrechen, wie im obigen Beispiel gezeigt.

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