Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1868to1872
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

27Dateien zeilenweise in Zieltab. copy

27Dateien zeilenweise in Zieltab. copy
02.02.2022 12:31:39
mw-cuore@gmx.de
Hallo, ich scheitere gerade an einem strukturellen Problem. Da Excel nicht wirklich mehrnutzerfähig ist, haben wir zu einem Trick gegriffen das Problem anderweitig zu lösen. Jeder Kollege/Kollegin bekommt eine eigene Tabelle, pro Buchstabe im Alphabet eine Tabelle, also Daten_A.xlsx, Daten_B.xlsx usw.. bis Daten_Z.xlsx
Jede Datei enthät das gleiche, identische Schema und Anzahl an Spalten. Nur die Anzahl der einzelnen Datensätze (Zeilen) pro Datei ist unterschiedlich. 2x im Jahr müssen diese Einzeltabellen in einer Gesamttabelle zu Auswertungszwecken zusammengefasst werden.
Das mache ich aktuell so:

Sub Kopieren_DatenZeileInZieltabelle()
'Quelle
Workbooks("A_Datentabelle.xlsx").Worksheets("GesamtStatistik").Range("A4:60").Copy
'Ziel (ohne Formate und Formeln)
Workbooks("Zieltabelle.xlsx").Worksheets("Gesamtdaten).Range("A3").PasteSpecial Paste:=xlPasteValues
End Sub
Zusätzlich habe ich in der Zieltabelle einen Button

Sub OpenExcelDatei
Dim name As String
name = Application.GetOpenFilename("Exceldateien (*.xlsx), *.xlsm")
Workbooks.Open(name)
um die einzelnen Quell-Dateien direkt auswählen zu können.
Da jede Range unterschiedlich groß ist, müssen zwei Dinge vor jeder Kopieraktion manuell angepasst werden
1.) Die Range und 2.) der Dateiname.
Hilfreich wäre schon, wenn man statt mit einer Range zu arbeiten die Datensätze aus jeder Einzeldatei zeilenweise
in die Zieltabelle übertragen könnte.
Zieldatei ist geöffnet. Mit dem Makro OpenExceldatei wird die erste Datensatzdatei A_Datentabelle.xlsx geöffnet.
Aus der Quelldatei werden per Buttonklick zeilenweise die Daten ausgelesen. A_Datentabelle.xlsx wird geschlossen,
dann ab zur nächsten "B" Tabelle - same Procedure. OK, beim Schreiben fällt mir auf,
dass man jetzt zumindest manuell noch kurz den veränderten Dateinamen im Kopier-Makro auf
"B_Datentabelle.xlsx" umstellen muss, aber das wäre zu verkraften.
Die Datensätze aus der "B-Tabelle" müssten unterhalb der letzten gefüllten Zeile der Zieltabelle fortgesetzt werden.
Ich habe noch diesen Code zum zeilenweise kopieren gefunden:

Sub HoleDatenAusQuelltabelleZeilenweise()
Dim wsDatenQuelle As Worksheet
Dim wsZiel As Worksheet
Dim lLetzteReiheDatenQuelle As Long
Dim lLetzteReiheZiel As Long
Set wsDatenQuelle = Workbooks("A_Datentabelle.xlsm).Worksheet(EinzelStatistik)
Set wsZiel = Workbooks(Zieltabelle.xlsx).Worksheet(Gesamtdaten)
'Letzte Reihe der DatenQuelle finden
lLetzteReiheDatenQuelle = wsDatenQuelle.Cells(wsDatenQuelle.Rows.Count, "A").End(xlUp).Row
'Letzte Reihe der Ziel Daten finden
lLetzteReiheZiel = wsZiel(wsZiel.Rows.Count, "A").End(xlUp).Offset(1).Row
'Erste auszulesende Reihe jeder Quelltabelle ist ab Zeile A4
wsDatenQuelle.Range("A4:Y" & lLetzteReiheDatenQuelle).copy _
'Erste zu befüllende Reihe der Zieltabelle ist ab Zeile A3, alles ohne Formate und ohne Formeln
wsZiel.Range("A3" & lLetzteReiheZiel).PasteSpecial Paste:=xlPasteValues
End Sub
Schon die Zeile Set wsDatenQuelle = Workbooks("A_Datentabelle.xlsm).Worksheet(GesamtStatistik)
wirft den Fehlercode 438 aus: Laufzeitfehler '438'
Objekt unterstützt diese Eigenschaft oder Methode nicht.
Keine Ahnung, vielleicht liegt es an Excel 365. Der Coder im Anleitungsvideo arbeitet mit Excel 2016.
Bin für jeden Support dankbar. Danke, dass sich der/die ein oder andere die Zeit um Lesen genommen hat

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
dir fehlen "
02.02.2022 12:48:12
Rudi
Set wsDatenQuelle = Workbooks("A_Datentabelle.xlsm").Worksheets("GesamtStatistik")
AW: 27Dateien zeilenweise in Zieltab. copy
02.02.2022 13:21:07
UweD
Hallo
Ich würde es NICHT Zeilenweise machen, sondern so.
- Die Quelldateien liegen alle in einem Verzeichnis
- In ein Modul der Zieldatei Dieses einfügen

Sub Kopieren_DatenZeileInZieltabelle()
Dim WBZ As Workbook, TBZ As Worksheet, LRZ As Long
Dim WBQ As Workbook, TBN As String, TBQ As Worksheet, LRQ As Long
Dim Pfad As String, Finde As String, Datei As String
Dim Sp As Integer, Z1 As Integer
Set WBZ = ThisWorkbook
'**** Vorgaben
Set TBZ = WBZ.Sheets("Gesamtdaten")
TBN = "GesamtStatistik" 'Name des Quellblattes
Pfad = "E:\Excel\Temp\"  'mit \ am Ende
Finde = "?_Datentabelle.xlsx"
Sp = 1 ' Spalte, die immer gefüllt ist Hier A
Z1 = 2 ' Erste Spalte mit Daten ggf. Überschriften
'***** Ende Vorgaben
Application.ScreenUpdating = False
Datei = Dir(Pfad & Finde)
'Reset: Löscht alles ab Zeile2
TBZ.UsedRange.Offset(1).Delete
Do While Len(Datei) > 0
Set WBQ = Workbooks.Open(Filename:=Pfad & Datei)
Set TBQ = WBQ.Sheets(TBN)
LRQ = TBQ.Cells(TBQ.Rows.Count, Sp).End(xlUp).Row 'letzte Zeile der Spalte
LRZ = TBZ.Cells(TBZ.Rows.Count, Sp).End(xlUp).Row + 1 'Erste Freie Zeile
'kopieren Werte
TBZ.Rows(LRZ).Resize(LRQ - Z1 + 1).Value = TBQ.Rows(Z1).Resize(LRQ - Z1 + 1).Value
WBQ.Close False
Datei = Dir() ' nächste Datei
Loop
End Sub

LG UweD
Anzeige
AW: 27Dateien zeilenweise in Zieltab. copy
02.02.2022 14:35:45
Michael
Hallo Uwe, wow. Das ist genial und funktioniert auf Anhieb. Ich weiß garnicht wie ich Dir danken soll. Ich weiß nicht, ob das hier statthaft sich irgendwie erkenntlich zu zeigen, wenn möglich. Aber ich würds tun
AW: 27Dateien zeilenweise in Zieltab. copy
02.02.2022 14:52:27
UweD
Hallo
Prima, dass es klappt.


&GT&GT ... sich irgendwie erkenntlich zu zeigen,
Sieh dir den Code an und versuche ihn zu verstehen.
Damit dann aus VBA nur mit Recorder irgendwann mal VBA Gut wird
LG UweD
AW: 27Dateien zeilenweise in Zieltab. copy
02.02.2022 13:28:53
Piet
Hallo
wie ich sehe gibt es schon lösungen, jetzt haben wir drei Varianten.
mfg Piet
  • Const sPfad = "D:\Excel Ordner\Excel Forum"
    
    Sub Ordner_auflisten()
    Dim wsDatenQuelle As Worksheet, n
    Dim lLetzteReiheQuelle As Long
    Dim lLetzteReiheZiel As Long
    Dim temp 'temp Array für Dir
    temp = Dir(sPfad & "\" & "*.xl*")
    On Error GoTo Fehler
    Application.ScreenUpdating = False
    With ThisWorkbook.Worksheets("Gesamtdaten")
    'Ziel Tabellenbereich ab Zeile 2 löschen
    .UsedRange.Offset(1, 0).Clear
    Do While Len(temp)
    Application.EnableEvents = False
    Workbooks.Open Filename:=sPfad & "\" & temp
    Set wsDatenQuelle = Workbooks(temp).Worksheets(1) '"EinzelStatistik")
    Application.EnableEvents = True
    If Not wsDatenQuelle Is Nothing Then
    'Lastzell in Quelle und Ziel ermitteln
    lLetzteReiheZiel = .Cells(Rows.Count, 1).End(xlUp).Row + 1
    lLetzteReiheQuelle = wsDatenQuelle.Cells(Rows.Count, 1).End(xlUp).Row
    'Quell Daten kopieren und i n Ziel einfügen
    wsDatenQuelle.Range("A4:Y" & lLetzteReiheQuelle).Copy
    .Cells(lLetzteReiheZiel, 1).PasteSpecial Paste:=xlPasteValues
    Workbooks(temp).Close False
    End If
    temp = Dir()
    Loop
    Application.CutCopyMode = False
    Application.EnableEvents = True
    End With
    Exit Sub
    Fehler: MsgBox temp & "  Open Fehler aufgetreten"
    Application.EnableEvents = True: Resume Next
    End Sub
    

  • Anzeige
    AW: 27Dateien zeilenweise in Zieltab. copy
    02.02.2022 14:41:55
    Michael
    Hallo Piet, auch Dir tausend Dank. Ihr seid echt Klasse, auch genialer Lösungsansatz, was ich bei Uwe geantwortet habe gilt auch hier. Weiß nur nicht, ob das statthaft ist.
    AW: 27Dateien zeilenweise in Zieltab. copy
    02.02.2022 15:19:17
    Piet
    Hallo Michael
    wir leben in einer freien Demokratie! Wir sprechen uns bei Lösungen nicht vorher hier ab wer dir eine Antwort gibt und wie der Code aussieht.
    Natürlich darfst du dich bei jedem einzeln Ratgeber bedanken, und wir freuen uns über jedes Dankeschön. Hat Spass gemacht dir zu helfen.
    Interessant für dich ist, das du sehen kannst wie vielfältig die VBA Befehle sind, und das jeder Programmierer seine eigenen Vorlieben hat wie er den Code aufbaut.
    Schön wenn beide Codes einwandfrei laufen, so kannst du VBA in der Praxis lernen. Ich verwende gerne die Kombination von Set Anweisung mit With Klammer!
    Herzliche Grüsse aus Ankara an meine Heimat .. Heimatstadt Köln.
    mfg Piet
    Anzeige
    AW: 27Dateien zeilenweise in Zieltab. copy
    02.02.2022 13:31:36
    Piet
    Nachtrag: ganz oben bei Const sPfad musst du natürlich deinen Ordnerpfad angeben. Bitte nicht vergessen!

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige