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

Zusammenfassung 2 Tab mit Makro

Zusammenfassung 2 Tab mit Makro
24.08.2020 15:33:35
Andreas
Hallo zusammen,
um einem Kollegen die Arbeit etwas zu erleichtern habe ich begonnen ein kleines Makro zu schreiben. Leider stoße ich hiermit an meine VBA-Grenzen und innerhalb meiner Abteilung kennt sich keiner so richtig mit VBA aus...
Aus zwei Excellisten sollen Arbeitsblätter in eine dritte kopiert (Zusammenfassung) werden. Aus den beiden Blättern soll dann noch ein drittes Blatt mit bestimmten Informationen aus den beiden eingefügten Blättern entstehen.
Mit dem Makro "AlleSheetsAusAllenGewaehltenMappenInEineMappeZusammenfuegen()" klappt das schon recht gut. Allerdings möchte ich von beiden Listen nur das jeweils erste Tablettenblatt einfügen. Aktuell fügt es alle vorhanden ein. Außerdem sollen die Arbeitsblätter am Ende stehen. Aktuell werden sie zwischen dem ersten und zweiten Blatt eingefügt (zwei Blätter in Zusammenfassungsliste schon vor dem Zusammenfügen vorhanden).
Das zweite Makro "Tabelle_zusammenfassen()" soll aus den beiden Tabellenblättern bestimmte Spalten rauskopieren und in ein neues Tabellenblatt einfügen. Ich bin schon so weit gekommen, dass die Listen in ein neues Blatt "Zusammenfassung" untereinander kopiert werden. Der Wunsch wäre, dass aus Blatt 1 nur zwei Spalten kopiert werden (z.B. Spalte D und J) und aus Blatt 2 eine Spalte (z.B. B). Die Spalten nicht untereinander angeordnet sondern nebeneinander (beginnend mit Spalte B, Zeile 2). Das Ergebnis möchte ich dann mit SVERWEIS vergleichen (dritter Schritt).
Für eine Hilfe wäre ich sehr dankbar! Bin noch ein absoluter VBA-Neuling :)
Vielen Dank im Voraus!
Andreas
Sub AlleSheetsAusAllenGewaehltenMappenInEineMappeZusammenfuegen()
Dim vntPathAndFileNames As Variant
Dim strPathAndFile As String
Dim lngI As Long
Dim wbkMappe As Workbook
Dim wksT As Worksheet
Dim wbkZiel As Workbook
Set wbkZiel = ThisWorkbook
vntPathAndFileNames = Application.GetOpenFilename( _
FileFilter:="Excel Files (*.xlsx), *.xlsx", _
Title:="Dateien mit gedrückter Strg Taste markieren!", _
MultiSelect:=True)
If VarType(vntPathAndFileNames) = vbBoolean Then
MsgBox "Abgebrochen!"
Else
For lngI = LBound(vntPathAndFileNames) To UBound(vntPathAndFileNames)
strPathAndFile = vntPathAndFileNames(lngI)
Set wbkMappe = Application.Workbooks.Open(strPathAndFile)
For Each wksT In wbkMappe.Worksheets
wksT.Copy wbkZiel.Worksheets(wbkZiel.Worksheets.Count)
Next
wbkMappe.Close False
Next
End If

Sub Tabelle_zusammenfassen()
Dim i As Integer
Dim Zusammenfassung As Worksheet
Set Zusammenfassung = Worksheets("Zusammenfassung")
For i = 2 To Worksheets.Count
Set BereichZielTab = Worksheets(i).UsedRange
Set LetzteZeileZusammenfassung = Worksheets(1).Cells(Rows.Count, "A").End(xlUp)(2)
BereichZielTab.Copy Destination:=LetzteZeileZusammenfassung
Next i
End Sub

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zusammenfassung 2 Tab mit Makro
24.08.2020 19:53:52
Oberschlumpf
Hi Andreas,
Allerdings möchte ich von beiden Listen nur das jeweils erste Tablettenblatt einfügen
Lösch diesen Code

For Each wksT In wbkMappe.Worksheets
wksT.Copy wbkZiel.Worksheets(wbkZiel.Worksheets.Count)
Next

und ersetz ihn durch diesen Code

wbkMappe.Sheets(1).Copy after:= wbkZiel.Worksheets(wbkZiel.Worksheets.Count)
Für deine 2. Frage weiß ich ohne Bsp-Datei von dir leider keine Antwort.
Hilfts denn für Frage 1?
Ciao
Thorsten
AW: Zusammenfassung 2 Tab mit Makro
24.08.2020 20:03:48
Marc
Hi Andreas,
hier schon mal dein erstes Problem:
Sub AlleSheetsAusAllenGewaehltenMappenInEineMappeZusammenfuegen()
Dim vntPathAndFileNames As Variant
Dim strPathAndFile As String
Dim lngI As Long
Dim wbkMappe As Workbook
Dim wksT As Worksheet
Dim wbkZiel As Workbook
Set wbkZiel = ThisWorkbook
vntPathAndFileNames = Application.GetOpenFilename( _
FileFilter:="Excel Files (*.xlsx), *.xlsx", _
Title:="Dateien mit gedrückter Strg Taste markieren!", _
MultiSelect:=True)
If VarType(vntPathAndFileNames) = vbBoolean Then
MsgBox "Abgebrochen!"
Else
For lngI = LBound(vntPathAndFileNames) To UBound(vntPathAndFileNames)
strPathAndFile = vntPathAndFileNames(lngI)
Set wbkMappe = Application.Workbooks.Open(strPathAndFile)
Set wksT = wbkMappe.Worksheets(1)
wksT.Copy After:=wbkZiel.Worksheets(wbkZiel.Worksheets.Count)
wbkMappe.Close False
Next
End If

Sollen die beiden Tabellenblätter aus denen du die Spalten ziehst die beiden Eingefügten sein?
Anzeige
AW: Zusammenfassung 2 Tab mit Makro
25.08.2020 11:24:00
Andreas
Hallo Marc,
vielen Dank für Deine RM. Das erste Makro läuft schon mal perfekt!
Ja die Spalten, die ich aus den beiden Blättern ziehe sollen auch eingefügt werden (in drittes Blatt). Bestimmte Spalten nebeneinander angeordnet, nicht untereinander.
Vielen Dank & viele Grüße
Andreas
AW: Zusammenfassung 2 Tab mit Makro
25.08.2020 19:15:07
Marc
Hallo,
kannst du mir evtl noch die Spalten nennen, die aus den Blättern gezogen werden sollen?
Gruß Marc
AW: Zusammenfassung 2 Tab mit Makro
26.08.2020 09:11:32
Andreas
Guten Morgen Marc,
aus Tabellenblatt 1 wäre dass Spalte B und V und aus Tabellenblatt 2 die Spalten D und I. Diese vier Spalten dann in Tabellenblatt "Zusammenfassung" nebeneinander einfügen.
Vielen Dank & viele Grüße
Andreas
Anzeige
AW: Zusammenfassung 2 Tab mit Makro
26.08.2020 13:00:41
Marc
Hallo Andreas,
ich hab das jetzt mal alles zusammengefasst:
Sub AlleSheetsAusAllenGewaehltenMappenInEineMappeZusammenfuegen()
Dim vntPathAndFileNames As Variant
Dim strPathAndFile As String
Dim lngI As Long
Dim wbkMappe As Workbook
Dim wksT As Worksheet
Dim wbkZiel As Workbook
Set wbkZiel = ThisWorkbook
vntPathAndFileNames = Application.GetOpenFilename( _
FileFilter:="Excel Files (*.xlsx), *.xlsx", _
Title:="Dateien mit gedrückter Strg Taste markieren!", _
MultiSelect:=True)
If VarType(vntPathAndFileNames) = vbBoolean Then
MsgBox "Abgebrochen!"
Else
For lngI = LBound(vntPathAndFileNames) To UBound(vntPathAndFileNames)
strPathAndFile = vntPathAndFileNames(lngI)
Set wbkMappe = Application.Workbooks.Open(strPathAndFile)
Set wksT = wbkMappe.Worksheets(1)
wksT.Copy After:=wbkZiel.Worksheets(wbkZiel.Worksheets.Count)
wbkZiel.Worksheets.Add
wbkZiel.Worksheets(wbkZiel.Worksheets.Count).Name = "Zusammenfassung"
For i = 1 To 2
With wksT
If i = 1 Then
.Columns("B") = wbkZiel.Worksheets(wbkZiel.Worksheets.Count).Columns("A")
.Columns("V") = wbkZiel.Worksheets(wbkZiel.Worksheets.Count).Columns("B")
Else
.Columns("D") = wbkZiel.Worksheets(wbkZiel.Worksheets.Count).Columns("C")
.Columns("I") = wbkZiel.Worksheets(wbkZiel.Worksheets.Count).Columns("D")
End If
End With
Next
wbkMappe.Close False
Next
End If
Gruß Marc
Anzeige
AW: Zusammenfassung 2 Tab mit Makro
27.08.2020 15:15:42
Andreas
Hallo Marc,
jetzt bekomme ich den Laufzeitfehler 1004 und diese Zeile wird markiert:
wbkZiel.Worksheets(wbkZiel.Worksheets.Count).Name = "Zusammenfassung"
Außerdem wird zu dem zu kopierenden Tabellenblatt ein neues, leeres Tabellenblatt eingefügt.
Bei der "Zuasammenfassung" wird nur ein Tabellenblatt gesamt eingefügt. Das mit den bestimmten Spalten funktioniert nicht (vermutlich weil vorher ein Fehler vorliegt).
Was auch noch perfekt wäre wenn die Originaldateien nach dem Kopieren geschlossen werden würden. Aktuell bleiben diese geöffnet.
Ich kann Dir auch die Dateien zum Testen hochladen wenn das hilft.
Vielen Dank & VG
Andreas
Anzeige
AW: Zusammenfassung 2 Tab mit Makro
27.08.2020 19:43:05
Marc
Hallo,
ja ich hab ein paar Fehler gemacht :D
Bitte lad sie mal hoch, dann mach ich das fertig.
Gruß Marc
AW: Zusammenfassung 2 Tab mit Makro
31.08.2020 18:35:51
Marc
Hallo Andreas,
so da is das Ding. Sorry, hatte ein langes Wochenende :)
https://www.herber.de/bbs/user/139956.zip
Gruß Marc
Anzeige
AW: Zusammenfassung 2 Tab mit Makro
01.09.2020 16:00:01
Andreas
Hallo Marc,
kein Problem, hoffe das lange WE war erholsam :)
Hab es heute getestet und paar Dinge sind mir noch aufgefallen. Hoffe es macht Dir nichts aus mir noch mal zu helfen.
1. Mit den Originaldateien wird aus Tabellenblatt 1 nur die erste Zeile (Überschrift in Zeile 1) kopiert. Die Werte darunter nicht. Bei Tabellenblatt 2 wird alles kopiert wie es sein soll. Ich hab ein paar Test gemacht und die Liste für Blatt 1 abgeändert aber ich komme nicht auf den Fehler. Dachte es liegt an Filterung, Sortierung, Gruppierung etc. Aber das hat keine Auswirkung... Hast Du eine Ahnung was der Fehler sein kann?
2. Bei Blatt 1 soll erst bei Zeile 4 (Überschriften) begonnen werden. Die Zeilen 1-3 darüber benötige ich nicht bzw. beim Zusammenfassen habe ich dann die ersten drei Zeilen mit sinnlosen Informationen drin. Kann man das noch mit einbauen? Bei Blatt 2 passt es. Das beginnt in Zeile 1 mit Überschriften und darunter dann die Werte.
3. Kann die Formatierung der Ursprungsdateien übernommen werden? Aktuell wird nur der reine Text kopiert. Wäre einfach schicker :)
4. Kannst Du das Makro bitte wieder trennen? Also eins für das Reinkopieren der Tabellenblätter und dann ein zweites zur das Zusammenfassen in einem Blatt. Hintergrund ist, dass die Ursprungsdateien an unterschiedlichen Orten liegen und mit der Zusammenfassung des Makros muss man mit Verknüpfungen arbeiten, die beide am gleichen Ort liegen. Ideal wäre es man klickt das Makro zu Reinkopieren einmal an und sucht die erste Datei. Dann nochmal Makro 1 anklicken für die zweite Datei und danach das Makro 2 mit der Zusammenfassung in ein neues Tabellenblatt. Sind mehr Klicks und man verliert etwas Zeit aber das spielt in dem Fall keine Rolle.
Vielen Dank schon mal!
Andreas
Anzeige
AW: Zusammenfassung 2 Tab mit Makro
01.09.2020 18:49:53
Marc
Hallo,
ich habs noch nicht so ganz verstanden, wie deine Blätter jetzt genau aussehen, aber ich verstehe ansatzweise.
Ich hab das Makro jetzt so geschrieben, wie du es mir geschickt hast, nur etwas umgeändert und genau auf die Beispieldateien, die du mir gesendet hast.
Wahrscheinlich willst/kannst du mir aus Datenschutzgründen die Originaldateien nicht senden, was es sehr schwierig für mich macht die Zellzusammenhänge ausfindig zu machen.
Ich habe aber schon eine andere Idee, die Tabellenblätter zu "kopieren", auch dass man die ersten drei zeilen weg lassen kann.
Das Makro kann auch getrennt werden, hatte da nur einen Denkfehler drin, welcher mich dazu verleiten lies, das ganze in einem zu schreiben.
Formate übertragen ist auch kein Problem.
Also, wenn ich das wirklich ein zu eins machen soll, mit Zellbezügen, änder doch einfach die Originaldatei so ab, dass sie Datenschutzrechtlich i.O. ist ;)
Gruß Marc
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige