Dateien mit bestimmten Namen suchen und kopieren in Excel VBA
Schritt-für-Schritt-Anleitung
Um Dateien mit bestimmten Namen in Excel zu suchen und zu kopieren, können wir VBA verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:
- Öffne Excel und drücke
ALT + F11
, um den VBA-Editor zu starten.
- Klicke auf
Einfügen
> Modul
, um ein neues Modul zu erstellen.
- Kopiere den folgenden Code in das Modul:
Sub copyFile()
Dim objFSO As Object, rng As Range
Dim strFileToCopy As String, strNewFile As String
Dim strOldPath As String, strNewPath As String
Dim lngC As Long
strOldPath = "E:\Temp\" 'Verzeichnis in dem die Datei liegt
strNewPath = "E:\Temp\Test\" 'Verzeichnis in welches kopiert werden soll
With ActiveSheet
For Each rng In Range("A1:A5") 'Bereich anpassen!
strFileToCopy = rng 'Zelle mit dem Namen
strFileToCopy = strFileToCopy & ".mpr" 'Suffix anhängen
lngC = 1
If Dir(strOldPath & strFileToCopy, vbNormal) <> "" Then
Do
strNewFile = Left(strFileToCopy, InStr(1, strFileToCopy, ".") - 1) & _
IIf(lngC > 1, "_" & CStr(lngC), "") & Mid(strFileToCopy, _
InStrRev(strFileToCopy, "."))
lngC = lngC + 1
Loop While Dir(strNewPath & strNewFile, vbNormal) <> ""
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.copyFile strOldPath & strFileToCopy, strNewPath & strNewFile
End If
Next
End With
Set objFSO = Nothing
Set rng = Nothing
End Sub
- Schließe den VBA-Editor und gehe zurück zu Excel.
- Führe das Makro
copyFile
aus, um die Dateien zu kopieren.
Häufige Fehler und Lösungen
-
Fehler: "Datei nicht gefunden"
- Überprüfe den Pfad der alten Datei (
strOldPath
). Achte darauf, dass die Datei tatsächlich vorhanden ist.
-
Fehler: "Zugriff verweigert"
- Stelle sicher, dass du die nötigen Berechtigungen hast, um auf die Dateien in den angegebenen Verzeichnissen zuzugreifen.
-
Fehler: "Ungültiger Dateiname"
- Achte darauf, dass die Namen in Spalte A korrekt sind und keine ungültigen Zeichen enthalten.
Alternative Methoden
Wenn du keine VBA-Programmierung verwenden möchtest, kannst du auch:
- Power Query verwenden: Damit kannst du Daten aus verschiedenen Quellen importieren und transformieren, jedoch ist das Kopieren von Dateien nicht direkt möglich.
- Batch-Skripte oder Windows PowerShell: Diese Methoden erfordern jedoch zusätzliche Kenntnisse in der Skripterstellung.
Praktische Beispiele
Wenn du in Zelle A1 den Namen XYZ
stehen hast und die Datei XYZ.mpr
in E:\Temp\
gespeichert ist, wird das oben genannte Makro diese Datei in das Verzeichnis E:\Temp\Test\
kopieren. Falls XYZ.mpr
bereits existiert, wird die Kopie als XYZ_1.mpr
, XYZ_2.mpr
, etc. gespeichert.
Tipps für Profis
- Nutze die
Application.ScreenUpdating = False
und Application.DisplayAlerts = False
Befehle, um die Ausführungsgeschwindigkeit zu erhöhen und unerwünschte Warnmeldungen zu vermeiden.
- Erstelle eine Benutzeroberfläche (UserForm), um die Eingabewerte einfacher zu handhaben.
- Verwende das
objFSO
-Objekt effektiv, um mit Dateien und Verzeichnissen zu arbeiten.
FAQ: Häufige Fragen
1. Wie kann ich mehrere Dateien in einem Rutsch kopieren?
Du kannst mehrere Namen in den Zellen angeben und das Makro iteriert über diese.
2. Funktioniert das auch in Excel 365?
Ja, der VBA-Code sollte in allen modernen Excel-Versionen funktionieren, einschließlich Excel 365.
3. Wie kann ich den Zielpfad dynamisch machen?
Du kannst den Zielpfad durch eine Eingabe in einer Zelle steuern, indem du den Pfad in deinem Makro anpasst.