Zellen und Zeilen aus Excel auslesen und in eine neue Datei kopieren
Schritt-für-Schritt-Anleitung
Um die Excel-Tabelle auszulesen und die Werte in eine neue Datei zu schreiben, folge diesen Schritten:
-
Vorbereitung der Dateien:
- Stelle sicher, dass du sowohl die Input-Datei (Tagesnachweis) als auch die Zieldatei in einem Ordner hast.
- Notiere dir den Pfad, in dem diese Dateien gespeichert sind.
-
VBA-Editor öffnen:
- Drücke
ALT + F11, um den VBA-Editor zu öffnen.
- Klicke auf
Einfügen > Modul, um ein neues Modul zu erstellen.
-
VBA-Code einfügen:
- Füge den folgenden Code in das Modul ein:
Sub F_en()
Dim WS As Worksheet: Set WS = Sheets("Zieldatei")
Dim WBQ As Workbook
Dim Pfad As String
Pfad = ThisWorkbook.Path & "\"
f = Dir(Pfad & "*.xlsx") ' Hier die Datei-Endung anpassen
Do While f <> ""
If GetAttr(Pfad & f) <> vbReadOnly Then
Set WBQ = Workbooks.Open(Pfad & f)
lr = WS.Cells(Rows.Count, 1).End(xlUp).Row + 1
Anz = WBQ.Sheets(1).Range("A6:A18").SpecialCells(xlCellTypeConstants).Count
For r = 6 To 5 + Anz
WS.Cells(lr, 1) = WBQ.Sheets(1).Cells(2, 3) ' Technikername
WS.Cells(lr, 2) = WBQ.Sheets(1).Cells(2, 7) ' Datum
WS.Cells(lr, 3) = WBQ.Sheets(1).Cells(r, 1) ' Tätigkeit
' Prüfen, ob der Wert "x" ist
For j = 3 To 11
If WBQ.Sheets(1).Cells(r, j) = "x" Then
WS.Cells(lr, j + 2) = "x"
End If
Next j
lr = lr + 1
Next r
WS.Cells(lr - 1, "O") = WBQ.Sheets(1).Cells(30, 3) ' Gesamtzeit
WBQ.Close False
End If
f = Dir
Loop
End Sub
- Makro ausführen:
- Schließe den VBA-Editor und gehe zurück zu Excel.
- Drücke
ALT + F8, wähle das Makro F_en aus und klicke auf Ausführen.
Häufige Fehler und Lösungen
-
Fehler: "Datei nicht gefunden"
- Überprüfe den angegebenen Pfad und stelle sicher, dass die Dateien im richtigen Verzeichnis liegen.
-
Fehler: "Zelle konnte nicht gefunden werden"
- Stelle sicher, dass die Zellenreferenzen im VBA-Code korrekt sind. Überprüfe die Struktur der Input-Datei.
-
Gesamtzeit wird mehrfach eingetragen
- Passe den Code an, um sicherzustellen, dass die Gesamtzeit nur einmal pro eingelesener Datei geschrieben wird.
Alternative Methoden
-
Power Query:
- Nutze Power Query, um Daten aus mehreren Excel-Dateien zu importieren und zusammenzuführen. Dies ist eine benutzerfreundliche Alternative, die keine Programmierkenntnisse erfordert.
-
Formeln:
- Wenn du keine VBA verwenden möchtest, kannst du auch Excel-Formeln wie
VERWEIS oder SVERWEIS verwenden, um Werte aus einer Tabelle auszulesen und aufzulisten.
Praktische Beispiele
Ein praktisches Beispiel für das Auslesen von Werten könnte so aussehen:
Tipps für Profis
-
Automatisierung:
- Du kannst einen Button in Excel erstellen, um das Makro mit einem Klick auszuführen. Dies erhöht die Benutzerfreundlichkeit.
-
Datenvalidierung:
- Implementiere Datenvalidierung in deiner Excel-Tabelle, um sicherzustellen, dass nur gültige Eingaben vorgenommen werden.
-
Versionskontrolle:
- Achte darauf, Backup-Kopien deiner Excel-Dateien zu erstellen, bevor du mit dem Auslesen und Verschieben von Daten beginnst.
FAQ: Häufige Fragen
1. Wie kann ich das Makro anpassen, um nur bestimmte Dateien auszulesen?
Du kannst die Dateiendung im Code anpassen, um nur bestimmte Typen von Excel-Dateien zu berücksichtigen, z.B. f = Dir(Pfad & "*.xls").
2. Wie unterdrücke ich die Bestätigungsdialoge beim Schließen der Datei?
Im Code kannst du Application.DisplayAlerts = False verwenden, um die Dialoge zu unterdrücken.
3. Kann ich das Makro auch für andere Excel-Versionen verwenden?
Ja, das Makro sollte in den meisten gängigen Excel-Versionen funktionieren, solange du die grundlegenden VBA-Funktionen verwenden kannst.