maniel
Goto Top

Aus allen Excel-Arbeitsmappen in einem Ordner die Werte bestimmter Zellen mit VBA auslesen

Liebes Forum

Ich bin ein absoluter VBA Neuling und habe schon zahlreiche Lösungen im Internet ausprobiert. Leider habe ich keine zum Funktionieren gebracht...

im Ordner
H:\temp\
liegen bis zu 200 Exceldateien mit dem Namen
Zeiterfassung NACHMNAME VORNAME.xlsm
aus diesen möchte ich aus dem Tabellenblatt
Export
die Werte der Zellen
A1:X1
auslesen
und in der aktuell geöffneten Arbeitsmappe im Tabellenblatt
Zusammenzug
in die Zellen
A2:X2
bzw. aus der nächsten Datei in die Zellen
A3:X3
usw. einfügen

Ich habe schon unzählige Lösungen dafür im Internet gefunden. Allerdings entsprachen alle nicht genau meinem Anliegen und ich war nicht in der Lage diese korrekt anzupassen.

Um Unterstützung aus dem Forum wäre ich SEHR dankbar!

PS: aktuell arbeiten wir noch mit Office 2013, bald mit 2016

Content-Key: 386615

Url: https://administrator.de/contentid/386615

Ausgedruckt am: 29.03.2024 um 00:03 Uhr

Mitglied: 137084
Lösung 137084 15.09.2018 aktualisiert um 10:27:41 Uhr
Goto Top
schon zahlreiche Lösungen im Internet ausprobiert
Nicht "probieren", sondern es erst mal "lernen", und dann das gelernte umsetzen!

Sub EneMeneMuhUndRausBistDu()
    On Error Resume Next
    Const PFAD = "h:\temp"  
    Dim ws as Worksheet, rngZiel as Range, f as String
    Set ws = Sheets("Zusammenzug")  
    set rngZiel = ws.Range("A2")  
    Application.DisplayAlerts = False
    Application.Screenupdating = False
    f = Dir(PFAD & "\Zeiterfassung*.xlsm")  
    While f <> ""  
        With GetObject(PFAD & "\" & f).Sheets("Export")  
             .Range("A1:X1").Copy  
             rngZiel.PasteSpecial xlPasteValuesAndNumberFormats
             .Parent.Close False
        End with
        set rngZiel = rngZiel.Offset(1,0)
        f = Dir
    Wend
    Application.DisplayAlerts = True
    Application.Screenupdating = True
    MsgBox "Hab fertsch."  
End Sub

-korrekturen.
Mitglied: maniel
maniel 15.09.2018 um 10:00:18 Uhr
Goto Top
Wow, das ging ja schnell. Herzlichen Dank!

Es erscheint jedoch noch die Fehlermeldung:
Die PasteSpecial-ethode des Range-Objekts konnte nicht ausgeführt werden.

Wenn ich diesen Teil einfach lösche läuft das Makro zwar ohne Fehler, aber es werden keine Werte in meine Tabelle geschrieben.
Mitglied: 137084
137084 15.09.2018 um 10:00:56 Uhr
Goto Top
Hatte ein Tippfehler drin, nochmal kopieren.
Mitglied: maniel
maniel 15.09.2018 um 10:07:53 Uhr
Goto Top
Wow... tausend DANK...

Ja, der Weg mit dem Lernen und anwenden wäre wohl geeigneter. Leider fehlte mir für diese einzelne Anwendung die Zeit dazu. DANKE
Mitglied: maniel
maniel 15.09.2018 um 10:16:14 Uhr
Goto Top
hmm... leider habe ich doch noch ein Problem.

Beim ersten Test lief das Makro gut durch.

Nun kommt am Schluss die MsgBox "Hab fertsch." Alledings sind dann keine Tabellenblätter mehr sichtbar.

Auch wenn ich die Zieldatei schliesse (vorher speichere) und wieder öffne enthält sie in der Ansicht keine Tabellenblätter mehr.
Mitglied: 137084
137084 15.09.2018 aktualisiert um 10:23:42 Uhr
Goto Top
Du hast durch den ersten Fehler noch ungeschlossene Excel Instanzen im Hintergrund laufen, beende im Taskmanager diese unsichtbaren Excel-Prozesse und alles wird gut!
Mitglied: maniel
maniel 15.09.2018 um 10:38:32 Uhr
Goto Top
Leider war das nicht die Lösung...
Ich habe zur Sicherheit auch den User abgemeldet und neu angemeldet...
Mitglied: 137084
137084 15.09.2018 aktualisiert um 10:42:04 Uhr
Goto Top
Geht hier einwandfrei. Muss an deinem Excel liegen.
Mitglied: maniel
maniel 15.09.2018 um 10:44:05 Uhr
Goto Top
Ich habe nun die alten Quelldateien nochmals gelöscht und neue in den Quellordner kopiert.
Nun funktioniert es. Weshalb auch immer?

Nochmals TAUSEND DANK!
Mitglied: 137084
137084 15.09.2018 um 10:58:14 Uhr
Goto Top
Keine Ursache. Dann bitte den Beitrag noch als erledigt kennzeichnen.