Werte aus mehreren Dateien kopieren per Makro
Schritt-für-Schritt-Anleitung
- Ordner für Templates speichern: Speichere alle eingehenden Templates in einem Ordner.
- Makro starten: Starte dein Excel-Makro.
- Ordner auswählen: Das Makro fragt dich, in welchem Ordner die Dateien liegen. Wähle den entsprechenden Ordner aus.
Sub Ordner_suchen()
Dim dat As FileDialog
Set dat = Application.FileDialog(msoFileDialogFolderPicker)
With dat
.Title = "Such schön...."
.InitialFileName = "C:\"
If .Show = -1 Then
MsgBox .SelectedItems(1)
End If
End With
End Sub
- Daten kopieren: Das Makro kopiert aus den eingegangenen Dateien die gewünschten Zellen nebeneinander in die unterschiedlichen Spalten, ohne dass die Dateien manuell geöffnet werden müssen.
- Schließen der Dateien: Alle geöffneten Dateien schließen, um die Übersichtlichkeit zu gewährleisten.
Häufige Fehler und Lösungen
Dim lastRow As Long
lastRow = Sheets("Ergebnis").Cells(Rows.Count, 1).End(xlUp).Row + 1
Alternative Methoden
-
Power Query: Eine alternative Methode, um Daten aus mehreren Excel-Dateien zu konsolidieren, ist die Verwendung von Power Query. Hier kannst du Daten aus verschiedenen Dateien importieren und transformieren, ohne ein VBA-Makro zu schreiben.
-
Excel-Daten importieren: Du kannst auch die Funktion „Daten abrufen“ in Excel verwenden, um Daten aus mehreren Dateien zu importieren. Dies ist besonders nützlich, wenn du kein VBA verwenden möchtest.
Praktische Beispiele
Hier ist ein Beispiel für ein Makro, das Daten aus mehreren Excel-Dateien kopiert und in ein Tabellenblatt einfügt:
Sub Daten_kopieren()
Dim dat As FileDialog
Dim fso As Object
Dim datein As Object
Dim WB As Workbook
Dim lastRow As Long
Dim ordner As String
Dim z As Long
'Ordner auswählen
Set dat = Application.FileDialog(msoFileDialogFolderPicker)
If dat.Show = -1 Then
ordner = dat.SelectedItems(1)
End If
Set fso = CreateObject("Scripting.FileSystemObject")
Set datein = fso.GetFolder(ordner)
For Each WB In datein.Files
If WB.Name Like "*.xls" Then
Workbooks.Open WB.Path
lastRow = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
'Daten kopieren
Sheets(1).Cells(1, 1).Copy Destination:=ThisWorkbook.Sheets("Ergebnis").Cells(lastRow, 1)
Workbooks(WB.Name).Close False
End If
Next WB
End Sub
Tipps für Profis
-
Makro anpassen: Passe das Makro so an, dass es spezifische Zellen in den geöffneten Dateien kopiert. Du kannst die Zellen nach Bedarf ändern, um genau die Daten zu erfassen, die du benötigst.
-
Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen in deinem Makro, um Probleme beim Öffnen von Dateien zu erkennen und zu lösen.
-
Leistungsoptimierung: Deaktiviere die Bildschirmaktualisierung und Berechnungen während der Makroausführung, um die Leistung zu verbessern.
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With
FAQ: Häufige Fragen
1. Wie viele Dateien kann ich mit diesem Makro verarbeiten?
Das Makro kann so viele Dateien verarbeiten, wie im angegebenen Ordner vorhanden sind, solange sie dem gewählten Dateiformat entsprechen.
2. Muss ich die Excel-Version beachten?
Ja, einige Funktionen und Syntax können je nach Excel-Version variieren. Dieses Tutorial basiert auf Excel 2016.
3. Was mache ich, wenn mein Makro nicht funktioniert?
Überprüfe die Datei- und Zellenreferenzen im Makro. Achte zudem darauf, dass alle erforderlichen Dateien im richtigen Format vorliegen.