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

Forumthread: Zellen und Zeilen auslesen und in neue Excel Datei kopierenauflisten

Zellen und Zeilen auslesen und in neue Excel Datei kopierenauflisten
13.11.2019 10:40:25
Dennis
Hallo zusammen,
ich bin blutiger Anfänger und habe mich gerade registriert, da ich aktuell vor einem Problem sitze und mich nicht selbst aus dem Schlamassel befreien kann.
Ich habe eine Excel Vorlage, welche als Tagesnachweis der ausgeübten Tätigkeiten im Bereich Technik/Fehlersuche dient. Die Tabelle ist folgerndermaßen aufgebaut:
C2 = Technikername
G2 =Datum
ab Zeile 6 bis 18 ( von Spalte A bis L ) Texfelder zum ankreuzen der einzelnen Tätigkeiten. Spalte L dient zusätzlich als Freitext.
C30 = Gesamtzeit der administrativen Tätigkeiten
Jeder Techniker füllt nun diesen Tagesausweis aus und schickt ihn mir per Mail zu, sodass ich eine Rückmeldung über die ausgeführten Tätigkeiten erhalte. Die Dateinen lege ich dann unter C:\ bei mir auf dem PC ab.
Um nun eine gesamte Auswertung aller Technker starten zu können, möchte ich den Inhalt der besagten Zellen und Zeilen auslesen und in einer neuen Tabelle auflisten. Die neue Tabelle soll genauso aufgebaut sein wie die Vorlage, lediglich der Inhalt der Zelle C30 soll in der Übersicht in Spalte M ab Zeile 6 auftauchen. Die Auflistung soll dann fortlaufen untereinander erfolgen.
Leere Zeilen aus der Vorlagendetei sollten dabei ignoriert werden.
Ich habe versucht ähnliche Inhlate im forum zu finden, leider ohne Erfolg. Villeicht kann mir jemand weiterhelfen
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: BeispieldateiEN
13.11.2019 11:49:08
Fennek
Hallo,
es wäre hilfreich, sowohl ein Beispiel für die (EMail)-Input-Datei als auch die Zieldatei zu zeigen.
mfg
AW: Zellen und Zeilen auslesen und in neue Excel Datei kopierenauflisten
13.11.2019 12:43:31
Dennis
Ich habe die die Tabellenvorlage für Input-Datei ( Tagesnachweis ) sowie die Vorlage zur Auswertung ( Zieldatei ) in eine Mappe gepackt.
https://www.herber.de/bbs/user/133177.xls
Die Zeildatei sollte eine separate Datei sein und die Daten sollten per Knopdruck abgerufen werden können.
Anzeige
AW: VBA zum Testen
13.11.2019 13:30:13
Fennek
Hallo,
schau dir diesen Code an: Nach Anpassen des Pfads wird jede Input_Datei nur einmal eingelesen:

Sub F_en()
Dim WS As Worksheet: Set WS = Sheets("Zieldatei")
Dim WBQ As Workbook
'Set WBQ = Workbooks("Dennis_Tagesnachweis.xlsx")
Pfad = ThisWorkbook.Path & "\" ' vbNullString
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(2).Count / 2
For r = 6 To 5 + Anz
WS.Cells(lr, 1) = WBQ.Sheets(1).Cells(2, 3)
WS.Cells(lr, 2) = WBQ.Sheets(1).Cells(2, 7)
WS.Cells(lr, 3) = WBQ.Sheets(1).Cells(r, 1)
WS.Cells(lr, "O") = WBQ.Sheets(1).Cells(30, 3)
For j = 3 To 11
If WBQ.Sheets(1).Cells(r, j) = "x" Then _
WS.Cells(lr, j + 2) = WBQ.Sheets(1).Cells(r, j)
Next j
lr = lr + 1
Next r
WBQ.Close 0
SetAttr Pfad & f, vbReadOnly
End If
f = Dir
Loop
End Sub
Wenn alles passt, kann der Code auch mit einem Button gestartet werden.
mfg
Anzeige
AW: kleine Änderung
13.11.2019 13:40:49
Fennek
ändere bitt die Zeile, die prüft, ob eine Datei bereits eingelesen wurden
von

If GetAttr(Pfad & f) = vbReadOnly Then
in

If GetAttr(Pfad & f)  vbReadOnly Then

AW: kleine Änderung
13.11.2019 16:39:09
Dennis
Hallo Fennek,
ich habe den Pfad angepasst und nach deiner Änderung funktioniert der Code ( für mich schon mal unglaublich ;-) )
Es wird nun jede Datei geöffnet und wieder geschlossen, und das sichtbar. Nur muss ich nun vor jedem Schließen bestätigen, ob ich die Änderung Speichern möchte oder nicht. Kann das unbemerkt im Hintergrund geschehen?
Anzeige
AW: kleine Änderung
13.11.2019 16:46:43
Dennis
Weiterhin fällt mir auf, dass die Gesamtzeit aus Zelle C30 der Vorlage für den Tagesnachweis in jede Spalte der Zieldatei geschrieben wird und das zeilenweise für jeden Auftrag. Diese sollte jedoch nur einmal pro eingelesene Datei erscheinen, da sonst die Berechnung der Gesamtzeit pro Techniker pro Tag falsch ist. Geht das?
Anzeige
AW: Pfade beachten
13.11.2019 17:07:22
Fennek

Sub F_en()
Dim WS As Worksheet: Set WS = Sheets("Zieldatei")
Dim WBQ As Workbook
'Set WBQ = Workbooks("Dennis_Tagesnachweis.xlsx")
Pfad = ThisWorkbook.Path & "\" ' vbNullString
If GetAttr(Pfad & f)  vbReadOnly Then
Set WBQ = GetObject(Pfad & f)
lr = WS.Cells(Rows.Count, 1).End(xlUp).Row + 1
Anz = WBQ.Sheets(1).Range("A6:A18").SpecialCells(2).Count / 2
For r = 6 To 5 + Anz
WS.Cells(lr, 1) = WBQ.Sheets(1).Cells(2, 3)
WS.Cells(lr, 2) = WBQ.Sheets(1).Cells(2, 7)
WS.Cells(lr, 3) = WBQ.Sheets(1).Cells(r, 1)
For j = 3 To 11
If WBQ.Sheets(1).Cells(r, j) = "x" Then _
WS.Cells(lr, j + 2) = WBQ.Sheets(1).Cells(r, j)
Next j
lr = lr + 1
Next r
WS.Cells(lr - 1, "O") = WBQ.Sheets(1).Cells(30, 3)
Application.DisplayAlerts = False
WBQ.Close 0
Application.DisplayAlerts = True
SetAttr Pfad & f, vbReadOnly
End If
f = Dir
Loop
End Sub

Anzeige
AW: kleine Änderung
19.11.2019 09:32:21
Dennis
Guten Morgen,
ich habe leider immer noch das Problem das der Wert aus Zelle C30 in jeder Zeile der Auswertung erscheint. Wie kann ich erreichen, dass der Wert dieser Zelle nur einmal pro Datei ausgelesen wird, er mir aber trotzdem ist der ausgewertetetn Liste richtig zugeordnet wird?
AW: kleine Änderung
13.11.2019 16:55:58
Dennis
Sorry Fennek, ich werde nicht gefragtob ich es speichern möchte, es wird gefragt ob ich Daten aktualisieren möchte oder nicht.Kann man das unterdrücken?
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

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:

  1. 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.
  2. VBA-Editor öffnen:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  3. 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
  1. 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:

  • Technikername in C2 und Datum in G2:

    • Diese Werte kannst du in die neue Tabelle übertragen, indem du sie in die entsprechenden Zellen schreibst (z.B. in Spalte A und B).
  • Tätigkeiten als Checkboxen:

    • Wenn ein Techniker eine Tätigkeit mit "x" markiert, wird dieses "x" in der Zieldatei in die entsprechende Zelle übertragen.

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.

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