Arbeitsblätter zusammenführen

Bild

Betrifft: Arbeitsblätter zusammenführen
von: oliver
Geschrieben am: 05.11.2003 09:10:17

hi exceller...
ich habe eine excel-arbeitsmappe mit ca 1300 arbeitsblätter drin und sollte diese informationen alle in ein einziges arbeitsblatt zusammenführen. copy - paste ist hier eine lebensaufgabe und ich suche nach einer schnelleren lösung. ich muss am ende einfach ein einziges excel-arbeitsblatt oder anders gesagt eine einzige tabelle haben worin alle daten meiner 1300 arbeitsblätter enthalten sind.
wer hat mir hierfür einen tipp? ich bin mit meinem latein am ende :-/

ganz herzlichen dank an alle die mir einen hinweis geben können...
liebe grüsse vom oliver

Bild


Betrifft: AW: Arbeitsblätter zusammenführen
von: Galenzo
Geschrieben am: 05.11.2003 10:07:17

Hallo,
der folgende Code erzeugt in deiner Mappe zunächst eine neue Seite mit Namen "Zusammenführung". Anschließend werden aus allen Blättern die Inhalte in dieses neue Blatt reinkopiert.


Private Sub Zusammenführen()

Dim wksT As Worksheet
Dim wksS As Worksheet
Dim As Integer
Dim RowsT As Integer

    Application.ScreenUpdating = False

    Set wksT = ActiveWorkbook.Sheets.Add(, Worksheets(Worksheets.Count), , xlWorksheet)
    wksT.Name = "Zusammenführung"
    
    For i = 1 To Worksheets.Count - 1
        Set wksS = Worksheets(i)
        RowsT = wksT.Cells(Rows.Count, 1).End(xlUp).Row + 1
        wksS.UsedRange.Copy Destination:=wksT.Cells(RowsT, 1)
    Next i

End Sub



Viel Erfolg und Spaß beim Nachbasteln!


Bild


Betrifft: AW: Arbeitsblätter zusammenführen
von: oliver
Geschrieben am: 05.11.2003 14:19:04

besten dank an mr galenzo...

leider hab ich das aber noch nicht hingekriegt. ich hab leider keine erfahrung mit makros und vba. wenn ich den code hinterlege und das file neu aufrufe werde ich zwar gefragt ob ich das makro aktivieren will - passieren tut jedoch nichts.
muss ich das script noch anpassen oder sonst was damit tun ausser es als makro zu speichern?

merci für die hilfe.
liebe grüsse vom oliver


Bild


Betrifft: AW: Arbeitsblätter zusammenführen
von: Galenzo
Geschrieben am: 06.11.2003 09:00:20

Hallo,
die Frage, ob Makros aktiviert werden soll resultiert aus der Sicherheitseinstellung für Makros. Mit dieser kannst du festlegen, ob Makros generell ausgeführt werden sollen oder ob vorher gefragt werden soll, oder ob die Makros komplett gesperrt werden sollen. Stichwort: Schutz vor Makroviren.
Dies kannst du unter "Extras/Makro/Sicherheit" einstellen.
Du solltest diese Frage also bestätigen, damit dein Makro ausgeführt wird.

Sorry, aber ich habe leider nicht auf "keine VBA-Kenntnisse" geachtet.
Ganz kurz die Vorgehensweise:
Mit ALT+F11 kommst du in den VBA-Teil deiner Tabellen. Dort erzeugst du mit "Einfügen/Modul" ein neues Modul. Das heißt dann wohl standardmäßig "Modul1".
Und dahinein schreibst/kopierst du diese Prozedur.
ACHTUNG!
Die erste Zeile heiß NICHT Private Sub Zusammenführen()
sondern nur Sub Zusammenführen() (sonst kann man die nicht aus Excel aus aufrufen)
Das Makro hast du nun also in einem Standardmodul im VBA eingegeben. Du kannst das VBA-Fenster nun wieder schliessen.

Jetzt solltest du noch einen Befehls-Button, oder einen Icon in der Symbolleiste oder ein Tastaturkürzel festlegen, über den das Makro dann aufgerufen wird. Das sollte es auch schon sein, um damit arbeiten zu können.
Unter "Extras/Makro/Makros/Optionen" kannst du z.B. ein Tastaturkürzel eingeben mit welchem du anschließend das Makro aufrufen kannst.

Na dann - viel Erfolg!


Bild


Betrifft: AW: Arbeitsblätter zusammenführen
von: oliver_b
Geschrieben am: 06.11.2003 09:55:52

hi mr galenzo...

besten dank für deine mühe. ich weiss das sehr zu schätzen :-)
allerdings hab ich noch nicht herausgefunden wie genau das script aussehen muss. wenn ich am anfang des scriptes ein "Sub Zusammenführen" habe und erst dann mit dem "

Private Sub blablabla" starte motzt er und verlangt nach einem "End Sub
". wie genau muss ich das script schreiben? kann ich sub's verschachteln?
jetzt sieht mein script so aus:

Sub Zusammenfuehren()


Private Sub Zusammenführen()
Dim wksT As Worksheet
Dim wksS As Worksheet
Dim i As Integer
Dim RowsT As Integer
    Application.ScreenUpdating = False
    Set wksT = ActiveWorkbook.Sheets.Add(, Worksheets(Worksheets.Count), , xlWorksheet)
    wksT.Name = "Zusammenführung"
    
    For i = 1 To Worksheets.Count - 1
        Set wksS = Worksheets(i)
        RowsT = wksT.Cells(Rows.Count, 1).End(xlUp).Row + 1
        wksS.UsedRange.Copy Destination:=wksT.Cells(RowsT, 1)
    Next i
End Sub


End Sub


so geht das aber nicht.
merci für deinen tipp.

liebe grüsse vom oliver :-)


Bild


Betrifft: AW: Arbeitsblätter zusammenführen
von: Galenzo
Geschrieben am: 06.11.2003 10:07:54

Neee - die ersten Zeilen gehen:


Sub Zusammenführen()
Dim wksT As Worksheet
Dim wksS As Worksheet
Dim i As Integer
Dim RowsT As Integer
Also nur das Private löschen! und natürlich auch nur EINMAL "End Sub
".
Eine Prozedur fängt mit Sub an und hört mit "End Sub" auf. Dazwischen stehen dann die einzelnen Anweisungen. (Mit dem Private vor dem Sub kann man nur den Zugriff auf das Makro von außerhalb verbieten - das willst du ja aber nicht, da du das Makro ja von Excel aus aufrufen willst. Also laß einfach nur das Private weg. Dann wird das Makro auch in Excel unter "Extras/Makro/Makros" in der LIste erscheinen.

OK?


Bild


Betrifft: AW: Arbeitsblätter zusammenführen
von: oliver_b
Geschrieben am: 06.11.2003 11:35:27

nasuper! *freuhüpf

jetzt geht schonmal was...
nur gibt er jetzt einen fehler aus:
"Laufzeitfehler 1004" "Kann Teil einer verbundenen Zelle nicht ändern."
der debugger markiert dann folgende programmzeile gel:
"wksS.UsedRange.Copy Destination:=wksT.Cells(RowsT, 1)"

was ist hier falsch?

nochmal lieben dank von oliver :-)


Bild


Betrifft: AW: Arbeitsblätter zusammenführen
von: Galenzo
Geschrieben am: 06.11.2003 14:10:45

Hallo,
ich hab's eben selber noch ein paarmal getestet, hat eigentlich immer funktioniert.
Allerdings kam EINMAL der beschriebene Fehler. Hängt wohl damit zusammen, wenn man mehrere Zellen miteinander untereinander verbunden hat. Aber auch nicht immer. Ich kann's nicht weiter nachvollziehen, wann das genau passiert.
Der Fehler ist mir nicht erklärlich.
Seit ich die letzte Zeile auf
wksS.UsedRange.Copy Destination:=wksT.Cells(RowsT + 1, 1)
geändert habe, trat er nicht wieder auf - vielleicht bringt das ja was.

Ich hoffe es....


Bild


Betrifft: AW: Arbeitsblätter zusammenführen
von: oliver_b
Geschrieben am: 06.11.2003 20:46:31

yuhuuuuu...

ganz ganz ganz herzlichen dank an mr. galenzo!
es hat perfekt geklappt. das hat mir extrem weitergeholfen. wow - cool *freu
wenn ich dir mal n stein in den garten werfen kann (ev in sachen netzwerke, hardware oderso) einfach sagen!

---> www.swiss-media-group.com

herzlichen dank auch an herber.de :-)

liebe grüsse vom oliver_b


Bild


Betrifft: AW: Tabellenregisterblätter durchsuchen?!?
von: Guido P.
Geschrieben am: 05.11.2003 10:09:40

Hi,

von der Logik her müsstest du doch nur jedes einzelne Tabellenblatt in einer Schleife bis ende durchgehen und das komplette (beschriebene Blatt) selektieren --> kopieren und nächstes AbBlatt selektieren usw....
Weiss nur nicht wie ich eine Schleife für sowas basteln sollte..

Vielleicht wer anderes?!?

Grüße
Guido P.


Bild

Beiträge aus den Excel-Beispielen zum Thema " 0912/6456-002 automatisch hochzählen?"