Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1676to1680
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Daten aus geschlossenen Datein übertragen

Daten aus geschlossenen Datein übertragen
26.02.2019 18:22:29
Sebastian
Guten Abend,
ich habe über recherchen den nachstehenden Code von Herrn Wershoven gefunden, der grundsätzlich das macht was ich brauche. Allerdings läuft der Code durch ohne Fehlermeldung und ohne das er irgendwas kopiert. In Zelle A1 bis BA32 sind auch durchgehend werde vorhanden, ohne leerzeilen. Könnte mir hier jemand helfen woran das liegen könnte? Alternativ wäre es vielleicht einfacher möglich (und flexibler) einen festen Bereich zu kopieren statt alle genutzten Zellen zu kopieren?
  • Option Explicit
    ' ************************************************************************************************
    ' Autor/en: http://www.online-vba.de - Marc Wershoven
    ' Verwendung der Quelltexte auf eigene Gefahr!
    ' Es gelten die Nutzungsbedingungen von www.online-vba.de!
    ' Original-Quelltext: www.online-vba.de/vba_datensammeln5.php
    ' ************************************************************************************************
    Sub MWTabellenAusMehrerenDateienEinlesen()
    Dim oTargetSheet1 As Object
    Dim oSourceBook1 As Object
    Dim sPfad As String
    Dim sDatei As String
    Dim lErgebnisZeile As Long
    Dim s As Long
    Dim z As Long
    Application.ScreenUpdating = False 'Das "Flackern" ausstellen
    '****1. Kopieren Berichte aktuelles Jahr****
    'Schritt 1: Arbeitsblatt für die Ergebnisse festlegen
    Set oTargetSheet1 = ActiveWorkbook.Sheets("Bericht")
    lErgebnisZeile = 2 'Ergebnisse eintragen ab Zeile 2
    'Schritt 2: Schleife über alle Excel Dateien in einem Verzeichnis
    sPfad = "\\bla\blub\XXX\XXX\XXX\XXX\XXX\2019"
    sDatei = Dir(CStr(sPfad & "*2019_Bericht.xlsx*")) 'Alle Excel Dateien
    Do While sDatei  ""
    'Schritt 3: öffnen der Datei und Datenübertragung
    Set oSourceBook1 = Workbooks.Open(sPfad & sDatei, False, True) 'nur lesend öffnen
    'Datenübertragung alle genutzten Zeilen und Spalten
    For z = 1 To oSourceBook1.Sheets("Summe").UsedRange.Rows.Count
    'Keine Leerzeilen verarbeiten
    If Trim(CStr(oSourceBook1.Sheets("Summe").Cells(z, 1).Value))  "" Then
    For s = 1 To oSourceBook1.Sheets("Summe").UsedRange.Columns.Count
    'Spalte 1 - Dateinamen
    oTargetSheet1.Cells(lErgebnisZeile, 1).Value = sDatei
    'Spalte 2 bis n - Tabelleninhalte des Arbeitsblattes "Tabelle1"
    oTargetSheet1.Cells(lErgebnisZeile, s + 2).Value = _
    oSourceBook1.Sheets("Summe").Cells(z, s).Value
    Next s
    lErgebnisZeile = lErgebnisZeile + 1
    End If
    Next z
    'Schritt 4: Datei wieder zu machen und nächste Schleifenrunde
    oSourceBook1.Close False 'nicht speichern
    'Nächste Datei
    sDatei = Dir()
    Loop
    Application.ScreenUpdating = True 'Das Bildschirm-Aktualisieren wieder einschalten
    'Variablen aufräumen
    Set oTargetSheet1 = Nothing
    Set oSourceBook1 = Nothing
    MsgBox "Aktualisierung abgeschlossen", vbApplicationModal
    End Sub
    

  • Gruß Sebastian

    11
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Daten aus geschlossenen Datein übertragen
    26.02.2019 18:41:12
    onur
    Wie wäre es, wenn du einfach mal deine (Beispiels-)Datei postest und erklärst, was du willst, statt irgend einen Code zu posten, den du irgendwo im Netz gefunden hast und von dem du dir erhofft hast, er würde einfach so perfekt für dein Problem passen.
    Wenn du so einen Code aus dem Netz verwenden willst, solltest du:
    1) Ihn wirklich verstehen können
    2) In der Lage sein, ihn passend abzuändern.
    AW: Daten aus geschlossenen Datein übertragen
    26.02.2019 19:23:10
    Sebastian
    Hallo Onur,
    ich verwende den Code in einer anderen Datei, wo er funktioniert. Deshalb wollte ich diesen für einen ähnlichen Zweck erneut verwenden, leider ohne das gewünschte Ergebnis. Hier bin ich leider etwas ratlos, warum nix kopiert wird. Ich würde nur die Quelldatei hochladen, die Zieldatei ist eindach eine neu Mappe mit entsprechender Bezeichnung des Arbeitsblattes.
    https://www.herber.de/bbs/user/127951.xlsx
    Alternativ, für mich ausreichend und eventuell einfacher, wenn nur der immer gleich Zellbereich ausgelesen wird statt aller genutzter zellen wie hier:
    
    For z = 1 To oSourceBook1.Sheets("Summe").UsedRange.Rows.Count
    'Keine Leerzeilen verarbeiten
    If Trim(CStr(oSourceBook1.Sheets("Summe").Cells(z, 1).Value))  "" Then
    For s = 1 To oSourceBook1.Sheets("Summe").UsedRange.Columns.Count
    'Spalte 1 - Dateinamen
    oTargetSheet1.Cells(lErgebnisZeile, 1).Value = sDatei
    'Spalte 2 bis n - Tabelleninhalte des Arbeitsblattes "Tabelle1"
    oTargetSheet1.Cells(lErgebnisZeile, s + 2).Value = _
    oSourceBook1.Sheets("Summe").Cells(z, s).Value
    Next s
    lErgebnisZeile = lErgebnisZeile + 1
    End If
    Next z
    

    Danke für die Hilfe.
    Gruß Sebastian
    Anzeige
    AW: Daten aus geschlossenen Datein übertragen
    26.02.2019 19:36:04
    onur
    Und wieso hat die Quelldatei kein Sheets("Summe")?
    AW: Daten aus geschlossenen Datein übertragen
    26.02.2019 19:38:32
    onur
    Und wo steht der Code?
    AW: Daten aus geschlossenen Datein übertragen
    26.02.2019 20:23:27
    Sebastian
    Hallo Onur,
    da gibt es auch kein Code. Wie ich geschrieben habe ist das die Quelldatei mit den Daten, die kopiert werden müssen. Das das Blatt nicht Summe heißt ist mein Fehler, da ich bei der Anonymisierung es vergessen hatte es umzubennen. Wenn der Ausgangscode in einer neuen Mappe geschrieben wird und ich auf die Quelldatei verweise kommt, wie beschrieben kein Ergebnis.
    Gruß Sebastian
    AW: Daten aus geschlossenen Datein übertragen
    26.02.2019 20:33:30
    onur
    Wenn du mal den Code mit RICHTIGEM PFAD (statt BLABLA und XXX) posten würdest, könnte ich ihn auch testen.
    Also GENAU so, wie bei dir.
    Anzeige
    AW: Daten aus geschlossenen Datein übertragen
    26.02.2019 20:55:10
    Sebastian
    Hallo Onur,
    wenn es daran liegt..
    Sub MWTabellenAusMehrerenDateienEinlesen()
    Dim oTargetSheet1 As Object
    Dim oSourceBook1 As Object
    Dim sPfad As String
    Dim sDatei As String
    Dim lErgebnisZeile As Long
    Dim s As Long
    Dim z As Long
    Application.ScreenUpdating = False 'Das "Flackern" ausstellen
    '****1. Kopieren Berichte aktuelles Jahr****
    'Schritt 1: Arbeitsblatt für die Ergebnisse festlegen
    Set oTargetSheet1 = ActiveWorkbook.Sheets("Tabelle1")
    lErgebnisZeile = 2 'Ergebnisse eintragen ab Zeile 2
    'Schritt 2: Schleife über alle Excel Dateien in einem Verzeichnis
    sPfad = "C:\Users\Name\Desktop\in Bearbeitung\Neuer Ordner"
    sDatei = Dir(CStr(sPfad & "*2019_Bericht.xlsx*")) 'Alle Excel Dateien
    Do While sDatei  ""
    'Schritt 3: öffnen der Datei und Datenübertragung
    Set oSourceBook1 = Workbooks.Open(sPfad & sDatei, False, True) 'nur lesend öffnen
    'Datenübertragung alle genutzten Zeilen und Spalten
    For z = 1 To oSourceBook1.Sheets("Summe").UsedRange.Rows.Count
    'Keine Leerzeilen verarbeiten
    If Trim(CStr(oSourceBook1.Sheets("Summe").Cells(z, 1).Value))  "" Then
    For s = 1 To oSourceBook1.Sheets("Summe").UsedRange.Columns.Count
    'Spalte 1 - Dateinamen
    oTargetSheet1.Cells(lErgebnisZeile, 1).Value = sDatei
    'Spalte 2 bis n - Tabelleninhalte des Arbeitsblattes "Tabelle1"
    oTargetSheet1.Cells(lErgebnisZeile, s + 2).Value = _
    oSourceBook1.Sheets("Summe").Cells(z, s).Value
    Next s
    lErgebnisZeile = lErgebnisZeile + 1
    End If
    Next z
    'Schritt 4: Datei wieder zu machen und nächste Schleifenrunde
    oSourceBook1.Close False 'nicht speichern
    'Nächste Datei
    sDatei = Dir()
    Loop
    Application.ScreenUpdating = True 'Das Bildschirm-Aktualisieren wieder einschalten
    'Variablen aufräumen
    Set oTargetSheet1 = Nothing
    Set oSourceBook1 = Nothing
    MsgBox "Aktualisierung abgeschlossen", vbApplicationModal
    End Sub
    
    Ebend getestet, Die Zieldatei mit dem Code liegt normal auf dem Desktop, selbstredend muss Name durch den eigenen Nutzernamen ersetzt werden im Pfad.
    Gruß Sebastian
    Anzeige
    AW: Daten aus geschlossenen Datein übertragen
    26.02.2019 21:20:00
    onur
    Diese Datei versuchst du zu öffnen:
    C:\Users\Name\Desktop\in Bearbeitung\Neuer Ordner*2019_Bericht.xlsx*
    

    Was sollen die beiden Sternchen und wo ist der Backslash hinter "Neuer "Ordner" ?
    Da kann der Code ja lange suchen.
    Abgesehen davon: Heisst der Ordner wirklich "Name"?
    AW: Daten aus geschlossenen Datein übertragen
    26.02.2019 21:32:20
    onur
    Du solltest vor:
    Do While sDatei  ""
    

    das schreiben:
    If sDatei = "" Then MsgBox "Nix gefunden!"
    

    damit du wenigstens eine Meldung bekommst, wenn nix gefunden wurde.
    Anzeige
    AW: Daten aus geschlossenen Datein übertragen
    26.02.2019 21:58:59
    Sebastian
    Nein Name muss durch den Benutzernamen ersetzt werden, da kann ich schreiben was ich will du wirst ein anderen haben. Aber es hat tatsächlich am fehlenden \ gelegen. Kopierfehler,da bei Adressleiste beim windows-explorer der letzer\ nicht mitgeschrieben wird, Danke. Die neue Meldung hat da auch geholfen.
    Gruß Sebastian
    AW: Daten aus geschlossenen Datein übertragen
    26.02.2019 22:03:20
    onur
    Das 2. Sternchen kannst du auch weglassen, da nach "XLSX" sowieso nix mehr kommen kann.

    303 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige