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:
- VBA-Editor öffnen: Drücke
ALT + F11
, um den VBA-Editor zu öffnen.
- Neues Modul erstellen: Klicke auf
Einfügen
> Modul
, um ein neues Modul zu erstellen.
- 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
- 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
-
Ordner erstellen und prüfen:
- Wenn der Ordner "Daten" nicht existiert, wird er erstellt, und es wird geprüft, ob er leer ist.
-
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.