3.1k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo zusammen!

Meine Aufgabe ist es ausgefüllte Vorlagen in einem Scheet zu verknüpfen und anschließen in einem Pivot zusammenzuführen.

Ich habe folgendes Problem: Aus mehreren Excel Dateien("VorlageX") & aus einem best. Sheet (alle mit identischer Struktur & Namen) sollen alle Daten in einer anderen Datei ("Zusammenfassung") auf einem Sheet hintereinander zusammengefasst werden.

Wie kann man diesen Prozess automatisieren, so dass die Daten nicht manuel per copy&paste eingefügt werden müssen.

Es wäre toll, wenn ihr mir helfen würdet.

Vielen Dank!!!

10 Antworten

0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

fuer die zusammenfassung(werte)

gruss nighty

Option Explicit
Sub DateienLesen()
Call EventsOff
Dim DateiName As String
DateiName = Dir("C:\Temp\" & "*.xls") 'pfad anpassen
Do While DateiName <> ""
If ThisWorkbook.Name <> DateiName Then
Workbooks.Open Filename:="C:\Temp\" & DateiName 'pfad anpassen
'die naechsten 2 zeilen die bereiche anpassen,wie worksheet.index aendern bzw durch namen ersetzen
'erste zeile quelle,zweite ziel
Workbooks(DateiName).Worksheets(1).Range("A1:A" & Workbooks(DateiName).Worksheets(1).Range("A" & Rows.Count).End(xlUp).Row).Copy
ThisWorkbook.Worksheets(1).Range("A" & ThisWorkbook.Worksheets(1).Range("A" & Rows.Count).End(xlUp).Row + 1).PasteSpecial Paste:=xlValues, Operation:=xlNone
Workbooks(DateiName).Close SaveChanges:=True
End If
DateiName = Dir
Loop
Call EventsOn
End Sub

Public Sub EventsOff()
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
End Sub

Public Sub EventsOn()
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
End Sub
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

loechen bitte :-)))

SaveChanges:=True

gruss nighty
0 Punkte
Beantwortet von
HI!
@nighty: Vielen Dank!!!!!!

Da ich ein absoluter Anfänger bin, könntest Du vielleicht noch mal genau erklären, was du mit der Korrektur gemeint hast?

Und noch 'ne Frage: Angenommen die Datei("VolageX"), aus der ich die Daten rauskopieren werde, enthält z.B 4 Sheets, von den nur z.B 2 Sheets in die Zusammenfassung mit einfließen sollen. Kann man das auch mit aufnehmen? Das Problem ist, dass sich die Anzahl der zu kopierenden Sheets ("DatenX") von Datei zu Datei unterscheidet...

Bin sehr dankbar für Vorschläge :-)

Gruß A
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi Amalia ^^

dann lass uns mal naegel mit koepfen machen :-))

anhand welcher daten feststellbar ob 1 oder 1 + 2

die gesammten werte oder bereiche ?

alle werte von 1 oder 1 + 2 in einer zusammenfassung oder getrennt ?

dateien alle in einem ordner,wenn ja allein oder gemischt ?
wenn gemischt,und nur dann, nach welchen merkmalen sind die dateinamen aufgebaut ?

korrigierung ist erstmal uninteressant da mir ja noch informationen fehlen :-))

gruss nighty
0 Punkte
Beantwortet von
Hi nighty!

Man kann entweder an der Datenstuktur feststellen, ob es die gewünschten Daten sind oder, was wohl sinnvoller ist, anhand des Sheet Namen.

Der gesamte Bereich ist relevant (bis auf die Überschrift). Wobei die Überschrift nicht notwendig ist: Ich könnte sie entfernen, wenn es dadurch einfacher wird.

Werde die Dateien in einem Ordner abspeichern (nicht gemischt).

Weiteres Problem ist, dass die Dateien nicht alle gleichzeitig "ankommen" werden, sondern nacheinander. Und es wäre gut immer den aktuellen Stand zu haben, falls das überhaupt realisierbar ist?

Vielen Dank!

Grüße
A
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi Amalia ^^

was wuedest du davon halten ^^

registrier dich und ich koennte dir per pn meine emailaddi senden

dann koenntest du mir zwei mustertabellen zuschicken

1 mappe mit der forderung auf 1 worksheet
2 mappe mit der forderung auf 2 worksheet

die so entstandene loesung werde ich dann dir zuschicken und hier im sn posten

gruss nighty
0 Punkte
Beantwortet von amalia Einsteiger_in (5 Punkte)
HI nighty,

hab micht jetzt registriert.

Wäre super, wenn du mir deine email -adresse schicken würdest.

Danke
Gruß
A
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi amalia ^^

abgeschickt :-))

gruss nighty
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

im groben schon mal eine loesung,feinarbeiten findet dann ueber emailaustausch statt

gruss nighty

Option Explicit
Sub DateienLesen()
Call EventsOff
Dim SHerfassung As Integer
Dim DateiName As String, Meldung As String
DateiName = Dir("C:\Temp2\" & "*.xls")
Do While DateiName <> ""
If ThisWorkbook.Name <> DateiName Then
Workbooks.Open Filename:="C:\Temp2\" & DateiName
For SHerfassung = 1 To Workbooks(DateiName).Worksheets.Count
If UCase(Mid(Workbooks(DateiName).Worksheets(SHerfassung).Name, 1, 4)) = "DATA" Then
With Workbooks(DateiName).Worksheets(SHerfassung)
.Range(.Cells(2, 1), .Cells(.UsedRange.SpecialCells(xlCellTypeLastCell).Row, .UsedRange.SpecialCells(xlCellTypeLastCell).Column)).Copy _
ThisWorkbook.Worksheets("Datenzusammenfassung").Range("A" & ThisWorkbook.Worksheets("Datenzusammenfassung").UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1)
End With
End If
Next SHerfassung
Workbooks(DateiName).Close SaveChanges:=False
End If
DateiName = Dir
Loop
Call EventsOn
End Sub

Public Sub EventsOff()
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
End Sub

Public Sub EventsOn()
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
End Sub
0 Punkte
Beantwortet von
Hi nighty,

Vielen Dank! Es hat super funktioniert!

Gruß
A
...