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

Daten aus mehreren Dateien in eine Tabelle übertr.

Daten aus mehreren Dateien in eine Tabelle übertr.
Constantin
Hallo,
ich möchte Datenzeilen (Spalte A-Z), die in verschiedenen Exceldateien (immer in Tabelle1) in einheitlichem Format stehen, in eine "zentrale" Datei (dort auch in Tabelle1) übertragen bzw. anfügen.
In einer zentralen Datei (Zentral.xls), die auch das Makro beinhalten soll, müssen also Sätze immer wieder an der nächst freien Zeile bzw. als kopierter Datenblock in Tabelle1 angehängt werden. In einer separaten Exceldatei ("Dateienliste.xls") stehen in Tabelle1, Spalte A, die Dateinamen untereinander (z.B. HinzuDatei1.xls, HinzuDatei2.xls usw.), die das Programm öffnen soll, die Daten kopieren und nach dem Übertragen in "Zentral.xls" unverändert wieder schließen soll.
Wer könnte mir beim Programmansatz etwas behilflich sein?
Grüße, Constantin

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Rückfragen
29.10.2009 10:18:52
Erich
Hi Constantin,
kann das Makro davon ausgehen, dass die Mappe Dateienliste.xls geöffnet ist?
In Dateienliste.xls stehen die Dateinamen ohne Pfadangaben.
Stehen die alle im selben Verzeichnis, vielleicht im selben Verzeichnis wie Zentral.xls oder Dateienliste.xls?
Kann man einfach die Anzahl der Quellzeilen ermitteln,
indem man den letzten nichtleeren Eintrag in Spalte A ermittelt?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Rückfragen
29.10.2009 10:47:13
Constantin
Hallo Erich,
danke für Deine Nachfrage - ja, alle zu öffnenden Hinzu-Dateien (HinzuDatei1.xls usw.) stehen im gleichen Verzeichnis (Pfad1). Die Zentral.xls (die das Makro enthält) steht steht in Pfad2 und die Datei "Dateienliste.xls" steht in Pfad3.
Die Dateien "Dateienliste.xls" ist beim Programmstart noch nicht geöffnet.
Die Anzahl Quellzeilen: Sowohl bei den "Hinzu-Dateien" mit den Datenzeilen wie auch in der "Dateienliste.xls" ließe sich die Anzahl ermitteln durch den nächstleeren Eintrag, denn Spalte A ist immer gefüllt in einer Zeile. Vielleicht ist noch wichtig: Sowohl in der "Dateienliste.xls" wie auch in den Hinzu-Dateien gibt es eine Überschriftenzeile. In der Zentral.xls, Tabelle1, steht zunächst noch nichts. Wenn es einfacher ist, könnte ich hier einmalig die Überschriftenzeile manuell reinkopieren. Das Programm müsste dann immer von Zeile 2 an bei den Hinzu-Dateien selektieren.
Grüße, Constantin
Anzeige
Sammel-Code
30.10.2009 00:03:45
Erich
Hi Constantin,
probier mal

Option Explicit
Sub Sammler()
Dim wksL As Worksheet, lngZ As Long, rngC As Range, lngQ As Long
Dim Calc As XlCalculation
Const strPfL As String = "c:\tmp\exc\"  ' Pfad der Dateienliste.xls - anpassen
Const strPfQ As String = "c:\tmp\"      ' Pfad der Quellmappen      - anpassen
With Application
Calc = .Calculation
.Calculation = xlCalculationManual
.EnableEvents = False
.ScreenUpdating = False
End With
On Error GoTo XErr
Set wksL = Workbooks.Open(strPfL & "Dateienliste.xls", False, True).Worksheets(1)
With ThisWorkbook.Worksheets(1)
lngZ = .Cells(.Rows.Count, 1).End(xlUp).Row
If Not IsEmpty(.Cells(lngZ, 1)) Then lngZ = lngZ + 1
End With
For Each rngC In wksL.Cells(2, 1). _
Resize(wksL.Cells(wksL.Rows.Count, 1).End(xlUp).Row - 1)
Workbooks.Open strPfQ & rngC, False, True
With ActiveWorkbook.Worksheets(1)
lngQ = .Cells(.Rows.Count, 1).End(xlUp).Row + (lngZ > 1)
If lngQ > 0 Then
.Cells(1, 1 - (lngZ > 1)).Resize(lngQ, 26).Copy _
ThisWorkbook.Worksheets(1).Cells(lngZ, 1)
'  schreibt in Spalte AA den Quelldateinamen:
'           ThisWorkbook.Worksheets(1).Cells(lngZ, 27).Resize(lngQ) = rngC.Value
lngZ = lngZ + lngQ
End If
.Parent.Close False
End With
Next rngC
wksL.Parent.Close False
XErr:
If Err.Number  0 Then MsgBox "Fehler " & Err.Number & vbLf & _
Err.Description, vbCritical, "Sammler"
With Application
.Calculation = Calc
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Sammel-Code / Spalte korrigieren ab Datei2
30.10.2009 14:40:32
Constantin
Hallo Erich,
mit Verlaub gesagt - in meinen Augen ein mega-cooles Programm! Ich bin noch dabei, die Programmschritte nachzuvollziehen. Eine winzig kleine Änderung müsste ich noch reinbringen: Ab der Hinzudatei2.xls beginnt die Übertragung erst mit Spalte 2. Wo müsste ich hier noch einen Parameter ändern? Die Überschriften werden jeweils noch mitübertragen, das ist unproblematisch. Ansonsten müsste man ab Datei2 erst ab der zweiten Zeile auslesen. Die Ergänzung mit dem Dateinamen in Spalte 27 ist übrigens sehr vorteilhaft.
Hättest Du noch einen Tipp, wie ich den Parameter für die Spalte einstelle für das Auslesen ab der zweiten Quelldatei?
Grüße, Constantin
Anzeige
Korrektur
30.10.2009 17:06:11
Erich
Hi Constantin,
zuerst habe ich deine Antwort gar nicht verstanden - Zeile 2 - Spalte B - ja, was denn?
Dann hab ichs aber doch bemerkt: Der erste Versuch war ein Satz mit X. Sorry!
Neu ist nur die erste dieser beiden Zeilen:

.Cells(1 - (lngZ > 1), 1).Resize(lngQ, 26).Copy _
ThisWorkbook.Worksheets(1).Cells(lngZ, 1)
Das "- (lngZ > 1)" stand an der falschen Stelle, bei den Spalten statt bei den Zeilen.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort und: Schönes Wochenende!
AW: Korrektur
30.10.2009 21:17:13
Constantin
Hallo Erich,
passt jetzt genau und läuft ausgesprochen flott durch. Ich danke Dir sehr für Deine Hilfe!
Grüße, Constantin
Anzeige

338 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige