sauger
Goto Top

spezielles zusammenfügen von Excel - Dateien

Hi @ all !!!

Ich suche jetzt schon seit Tagen nach einer Lösung, doch leider habe ich bis jetzt noch keine genaue Lösung für mein Problem gefunden.

Ich habe mir mit Microsoft Sharepoint Services ein Intranet sozusagen zusammen gestellt. Dort habe ich auf der linken Seite eine Menüleiste, inder es einen Button "Schauklassen" gibt. Klickt man nun auf diesen so öffnet sich per inlineframe in der Mitte der Seite eine Liste mit genau 63 verschiedenen Excel-Dateien.


Diese Dateien haben folgende Namen:

Schauklasse_1.xls
Schauklasse_2.xls
Schauklasse_3.xls
Schauklasse_4.xls
Schauklasse_5.xls
usw...

Also bis "Schauklasse_63.xls".


Nun haben verschiedene Benutzer, Rechte einzelne Dateien mit Excel zu öffnen, zu ändern, und wieder auf dem Sharepoint abzuspeichern. Die Datei wird einfach automatisch mit Excel geöffnet sobald ein Benutzer auf die entsprechende Datei klickt. Wenn er Excel, dann wieder schließt und klickt auf "Änderungen speichern" dann wird die aktualisierte Excel-Tabelle automatisch bei Sharepoint abgespeichert, sodass dort nun die aktuelle Datei automatisch zu finden ist. Da die alte Version ja soeben überschrieben wurde.

Dies funktioniert soweit auch alles einwandfrei. Also "Benutzer 1" kann zum Beispiel die Dateien "Schauklasse_1.xls" bis einschließlich Datei "Schauklasse_25.xls" öffnen, bearbeiten und wieder abspeichern. Und "Benutzer 2" kann zum Beispiel die Dateien "Schauklasse_26.xls" bis einschließlich "Schauklasse_63.xls" öffnen, bearbeiten und wieder abspeichern.

Zur Info: Jede der 63 Excel-Dateien hat nur einen Reiter (=Tabellenblatt) unten (Tabelle 1).


So jetzt möchte ich folgendes erreichen:

Ich habe in einem anderen Verzeichnis auf meiner Festplatte eine Excel-Datei namens "Zusammenfassung_Schauklasse.xls" erstellt welche leer ist mit ebenfalls einem Reiter unten (=Tabellenblatt) / (Tabelle 1). Jetzt möchte ich es irgendwie schaffen, dass Excel automatisch alle Daten von den anderen Excel-Dateien untereinander in diese Excel-Datei kopiert.

Dies sollte dann in etwa so aussehen:
Excel holt automatisch aus der Datei "Schauklasse_1.xls" Daten von A1:G10 (da nur Daten in den Feldern von A1 bis G10 vorhanden sind), danach holt Excel automatisch aus der Datei "Schauklasse_2.xls" Daten zum Beispiel von A1:G20 (da zum Beispiel nur Daten in diesen Feldern von A1 bis G20 vorhanden sind) , usw... Bis Excel automatisch alle Daten von den Dateien "Schauklasse_1.xls" bis "Schauklasse_63.xls" gesammelt hat.
Nun kopiert Excel automatisch alle gesammelten Daten untereinander in die Datei "Zusammenfassung_Schauklassen.xls".


Also in etwa sollte das Ergebnis dann so aussehen in der Datei "Zusammenfassung_Schauklasse.xls":

A1:G10 stehen nun die Daten von der Excel Datei "Schauklasse_1.xls"
die Zeile 11 und die Zeile 12 soll leer bleiben <<
A13:G32 stehen nun die Daten von der Excel Datei "Schauklasse_2.xls"
die Zeile 33 und die Zeile 34 soll wieder leer bleiben <<
Also nach jeder Einfügung von Daten aus einer Excel Datei sollen 2 Zeilen freibleiben und danach soll Excel wieder Daten von einer anderen Datei einfügen, danach wieder 2 Zeilen frei lassen und weiter einfugen, usw... Bis Excel irgendwann zu Schluss die letzten Daten von der Datei "Schauklasse_63.xls" eingefügt hat.

Excel soll mir also in die Datei "Zusammenfassung_Schauklasse.xls" nicht 63 Reiter erstellen (=Tabellenblätter), sonder alle Daten in den Reiter (=Tabellenblatt) "Tabelle 1" kopieren.


Super wäre das ganze auch noch, wenn dieser Prozess automatisch abläuft wenn ein Benutzer die Datei "Zusammenfassung_Schauklasse.xls" öffnet. Somit wäre bei der Öffnung dieser Datei immer der aktuelle Datensatz aus allen 63 Dateien vorhanden.
Wenn ein Benutzer zum Beispiel Daten in der Datei "Schauklasse_1.xls" ändert, so würde sich die Datei namens "Zusammenfassung_Schauklasse.xls" beim öffnen automatisch aktualisieren. D.h. die schon vorhandenen Daten in der Datei "Zusammenfassung_Schauklasse.xls" von der Datei "Schauklasse_1.xls" würden dann automatisch überschrieben werden. Erst danach lässt sich die Excel-Tabelle "Zusammenfassung_Schauklasse.xls" betrachten.


Dies hat folgenden Grund dass ich diese Sache benötige:
Auf der Sharepoint Seite gibt es ein Button zur Datei "Zusammenfassung_Schauklasse.xls" die wiederum andere Benutzer öffnen können. Da einige Benutzer alle Daten aus den 63 Dateien auf einmal zusammenhängend ausdrucken müssen. Somit müssten die Benutzer nur diese eine Datei namens "Zusammenfassung_Schauklasse.xls" öffnen und könnten diese dann bequem mit Excel zusammenhängend ausdrucken.


Ich hoffe dass ich alles ausführlich genug geschildert habe. Ich habe auch schon versucht einige Codes einzubauen (Makro's), doch keiner brachte mir den gewünschten Erfolg. Leider kenne ich mich mit Makro auch nicht aus.


Für jede Hilfe bin ich sehr Dankbar !!!


mfg,
sAUGER

Content-Key: 47281

Url: https://administrator.de/contentid/47281

Ausgedruckt am: 28.03.2024 um 21:03 Uhr

Mitglied: sAUGER
sAUGER 22.12.2006 um 09:35:41 Uhr
Goto Top
Sodele, jetzt habe ich mal mit Excel eine Makro aufgezeichnet, jedoch funktioniert die nicht richtig.

Was habe ich falsch gemacht?

Hier mal den Makro - Code:


Sub sAUGER()
'
' sAUGER Makro
'
'
Application.WindowState = xlMinimized
Rows("1:1").Select
Selection.Delete Shift:=xlUp
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=93
Range("A103").Select
Windows("Schauklasse_1.xls").Activate
ActiveWorkbook.Save
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=99
Range("A205").Select
Windows("Schauklasse_2.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=105
Range("A307").Select
Windows("Schauklasse_3.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=96
Range("A409").Select
Windows("Schauklasse_4.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=105
Range("A511").Select
Windows("Schauklasse_5.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=105
Range("A613").Select
Windows("Schauklasse_6.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=102
Range("A715").Select
Windows("Schauklasse_7.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=102
Range("A817").Select
Windows("Schauklasse_8.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=102
Range("A919").Select
Windows("Schauklasse_9.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=99
Range("A1021").Select
Windows("Schauklasse_10.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=102
Range("A1123").Select
Windows("Schauklasse_11.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=105
Range("A1225").Select
Windows("Schauklasse_12.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=102
Range("A1327").Select
Windows("Schauklasse_13.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=108
Range("A1429").Select
Windows("Schauklasse_14.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=96
Range("A1531").Select
Windows("Schauklasse_15.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=102
Range("A1633").Select
Windows("Schauklasse_16.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=99
Range("A1735").Select
Windows("Schauklasse_17.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=102
Range("A1837").Select
Windows("Schauklasse_18.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=99
Range("A1939").Select
Windows("Schauklasse_19.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=105
Range("A2041").Select
Windows("Schauklasse_20.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=108
Range("A2143").Select
Windows("Schauklasse_21.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=99
Range("A2245").Select
Windows("Schauklasse_22.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=102
Range("A2347").Select
Windows("Schauklasse_23.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
ActiveWindow.SmallScroll Down:=6
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=99
Range("A2449").Select
Windows("Schauklasse_24.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=102
Range("A2551").Select
Windows("Schauklasse_25.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=105
Range("A2653").Select
Windows("Schauklasse_26.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=105
Range("A2755").Select
Windows("Schauklasse_27.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=99
Range("A2857").Select
Windows("Schauklasse_28.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=99
Range("A2959").Select
Windows("Schauklasse_29.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=102
Range("A3061").Select
Windows("Schauklasse_30.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=108
Range("A3163").Select
Windows("Schauklasse_31.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=102
Range("A3265").Select
Windows("Schauklasse_32.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=96
Range("A3367").Select
Windows("Schauklasse_33.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=102
Range("A3469").Select
Windows("Schauklasse_34.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=99
Range("A3571").Select
Windows("Schauklasse_35.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=102
Range("A3673").Select
Windows("Schauklasse_36.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=102
Range("A3775").Select
Windows("Schauklasse_37.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=102
Range("A3877").Select
Windows("Schauklasse_38.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=105
Range("A3979").Select
Windows("Schauklasse_39.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=105
Range("A4081").Select
Windows("Schauklasse_40.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=102
Range("A4183").Select
Windows("Schauklasse_41.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=96
Range("A4285").Select
Windows("Schauklasse_42.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=105
Range("A4387").Select
Windows("Schauklasse_43.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=105
Range("A4489").Select
Windows("Schauklasse_44.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=102
Range("A4591").Select
Windows("Schauklasse_45.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=99
Range("A4693").Select
Windows("Schauklasse_46.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=105
Range("A4795").Select
Windows("Schauklasse_47.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=102
Range("A4897").Select
Windows("Schauklasse_48.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
ActiveWindow.SmallScroll Down:=-9
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=105
Range("A4999").Select
Windows("Schauklasse_49.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=96
Range("A5101").Select
Windows("Schauklasse_50.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=105
Range("A5203").Select
Windows("Schauklasse_51.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=102
Range("A5305").Select
Windows("Schauklasse_52.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=102
Range("A5407").Select
Windows("Schauklasse_53.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=102
Range("A5509").Select
Windows("Schauklasse_54.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=93
Range("A5611").Select
Windows("Schauklasse_55.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=114
Range("A5713").Select
Windows("Schauklasse_56.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=96
Range("A5815").Select
Windows("Schauklasse_57.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=99
Range("A5917").Select
Windows("Schauklasse_58.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=99
Range("A6019").Select
Windows("Schauklasse_59.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Application.WindowState = xlMinimized
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=105
Range("A6121").Select
Windows("Schauklasse_60.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=108
Range("A6223").Select
Windows("Schauklasse_61.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=93
Range("A6325").Select
Windows("Schauklasse_62.xls").Activate
ActiveWindow.Close
Range("A1:G100").Select
Selection.Copy
Windows("Zusammenfassung_Schauklassen_drucken.xls").Activate
ActiveSheet.Paste
ActiveWindow.LargeScroll Down:=-28
ActiveWindow.ScrollRow = 5615
ActiveWindow.ScrollRow = 5602
ActiveWindow.ScrollRow = 5589
ActiveWindow.ScrollRow = 5576
ActiveWindow.ScrollRow = 5563
ActiveWindow.ScrollRow = 5549
ActiveWindow.ScrollRow = 5536
ActiveWindow.ScrollRow = 5523
ActiveWindow.ScrollRow = 5497
ActiveWindow.ScrollRow = 5484
ActiveWindow.ScrollRow = 5458
ActiveWindow.ScrollRow = 5445
ActiveWindow.ScrollRow = 5432
ActiveWindow.ScrollRow = 5405
ActiveWindow.ScrollRow = 5392
ActiveWindow.ScrollRow = 5379
ActiveWindow.ScrollRow = 5353
ActiveWindow.ScrollRow = 5340
ActiveWindow.ScrollRow = 5314
ActiveWindow.ScrollRow = 5301
ActiveWindow.ScrollRow = 5275
ActiveWindow.ScrollRow = 5248
ActiveWindow.ScrollRow = 5235
ActiveWindow.ScrollRow = 5209
ActiveWindow.ScrollRow = 5183
ActiveWindow.ScrollRow = 5157
ActiveWindow.ScrollRow = 5131
ActiveWindow.ScrollRow = 5104
ActiveWindow.ScrollRow = 5065
ActiveWindow.ScrollRow = 5039
ActiveWindow.ScrollRow = 5000
ActiveWindow.ScrollRow = 4961
ActiveWindow.ScrollRow = 4921
ActiveWindow.ScrollRow = 4882
ActiveWindow.ScrollRow = 4843
ActiveWindow.ScrollRow = 4804
ActiveWindow.ScrollRow = 4751
ActiveWindow.ScrollRow = 4699
ActiveWindow.ScrollRow = 4660
ActiveWindow.ScrollRow = 4607
ActiveWindow.ScrollRow = 4555
ActiveWindow.ScrollRow = 4489
ActiveWindow.ScrollRow = 4437
ActiveWindow.ScrollRow = 4385
ActiveWindow.ScrollRow = 4346
ActiveWindow.ScrollRow = 4306
ActiveWindow.ScrollRow = 4267
ActiveWindow.ScrollRow = 4228
ActiveWindow.ScrollRow = 4202
ActiveWindow.ScrollRow = 4175
ActiveWindow.ScrollRow = 4136
ActiveWindow.ScrollRow = 4110
ActiveWindow.ScrollRow = 4071
ActiveWindow.ScrollRow = 4045
ActiveWindow.ScrollRow = 4005
ActiveWindow.ScrollRow = 3966
ActiveWindow.ScrollRow = 3940
ActiveWindow.ScrollRow = 3901
ActiveWindow.ScrollRow = 3861
ActiveWindow.ScrollRow = 3822
ActiveWindow.ScrollRow = 3796
ActiveWindow.ScrollRow = 3757
ActiveWindow.ScrollRow = 3717
ActiveWindow.ScrollRow = 3691
ActiveWindow.ScrollRow = 3652
ActiveWindow.ScrollRow = 3613
ActiveWindow.ScrollRow = 3573
ActiveWindow.ScrollRow = 3521
ActiveWindow.ScrollRow = 3469
ActiveWindow.ScrollRow = 3416
ActiveWindow.ScrollRow = 3377
ActiveWindow.ScrollRow = 3325
ActiveWindow.ScrollRow = 3272
ActiveWindow.ScrollRow = 3220
ActiveWindow.ScrollRow = 3181
ActiveWindow.ScrollRow = 3129
ActiveWindow.ScrollRow = 3076
ActiveWindow.ScrollRow = 2998
ActiveWindow.ScrollRow = 2945
ActiveWindow.ScrollRow = 2893
ActiveWindow.ScrollRow = 2828
ActiveWindow.ScrollRow = 2788
ActiveWindow.ScrollRow = 2749
ActiveWindow.ScrollRow = 2697
ActiveWindow.ScrollRow = 2657
ActiveWindow.ScrollRow = 2605
ActiveWindow.ScrollRow = 2579
ActiveWindow.ScrollRow = 2553
ActiveWindow.ScrollRow = 2513
ActiveWindow.ScrollRow = 2487
ActiveWindow.ScrollRow = 2461
ActiveWindow.ScrollRow = 2422
ActiveWindow.ScrollRow = 2383
ActiveWindow.ScrollRow = 2343
ActiveWindow.ScrollRow = 2304
ActiveWindow.ScrollRow = 2265
ActiveWindow.ScrollRow = 2213
ActiveWindow.ScrollRow = 2173
ActiveWindow.ScrollRow = 2121
ActiveWindow.ScrollRow = 2055
ActiveWindow.ScrollRow = 2003
ActiveWindow.ScrollRow = 1964
ActiveWindow.ScrollRow = 1925
ActiveWindow.ScrollRow = 1885
ActiveWindow.ScrollRow = 1846
ActiveWindow.ScrollRow = 1807
ActiveWindow.ScrollRow = 1755
ActiveWindow.ScrollRow = 1728
ActiveWindow.ScrollRow = 1689
ActiveWindow.ScrollRow = 1650
ActiveWindow.ScrollRow = 1611
ActiveWindow.ScrollRow = 1571
ActiveWindow.ScrollRow = 1545
ActiveWindow.ScrollRow = 1519
ActiveWindow.ScrollRow = 1493
ActiveWindow.ScrollRow = 1454
ActiveWindow.ScrollRow = 1414
ActiveWindow.ScrollRow = 1375
ActiveWindow.ScrollRow = 1336
ActiveWindow.ScrollRow = 1297
ActiveWindow.ScrollRow = 1257
ActiveWindow.ScrollRow = 1218
ActiveWindow.ScrollRow = 1179
ActiveWindow.ScrollRow = 1153
ActiveWindow.ScrollRow = 1113
ActiveWindow.ScrollRow = 1074
ActiveWindow.ScrollRow = 1035
ActiveWindow.ScrollRow = 1022
ActiveWindow.ScrollRow = 996
ActiveWindow.ScrollRow = 969
ActiveWindow.ScrollRow = 943
ActiveWindow.ScrollRow = 917
ActiveWindow.ScrollRow = 891
ActiveWindow.ScrollRow = 865
ActiveWindow.ScrollRow = 838
ActiveWindow.ScrollRow = 825
ActiveWindow.ScrollRow = 799
ActiveWindow.ScrollRow = 773
ActiveWindow.ScrollRow = 747
ActiveWindow.ScrollRow = 734
ActiveWindow.ScrollRow = 721
ActiveWindow.ScrollRow = 708
ActiveWindow.ScrollRow = 695
ActiveWindow.ScrollRow = 681
ActiveWindow.ScrollRow = 668
ActiveWindow.ScrollRow = 655
ActiveWindow.ScrollRow = 642
ActiveWindow.ScrollRow = 629
ActiveWindow.ScrollRow = 616
ActiveWindow.ScrollRow = 603
ActiveWindow.ScrollRow = 577
ActiveWindow.ScrollRow = 551
ActiveWindow.ScrollRow = 538
ActiveWindow.ScrollRow = 511
ActiveWindow.ScrollRow = 498
ActiveWindow.ScrollRow = 459
ActiveWindow.ScrollRow = 433
ActiveWindow.ScrollRow = 420
ActiveWindow.ScrollRow = 407
ActiveWindow.ScrollRow = 380
ActiveWindow.ScrollRow = 354
ActiveWindow.ScrollRow = 341
ActiveWindow.ScrollRow = 328
ActiveWindow.ScrollRow = 315
ActiveWindow.ScrollRow = 289
ActiveWindow.ScrollRow = 263
ActiveWindow.ScrollRow = 250
ActiveWindow.ScrollRow = 237
ActiveWindow.ScrollRow = 210
ActiveWindow.ScrollRow = 197
ActiveWindow.ScrollRow = 184
ActiveWindow.ScrollRow = 171
ActiveWindow.ScrollRow = 158
ActiveWindow.ScrollRow = 145
ActiveWindow.ScrollRow = 132
ActiveWindow.ScrollRow = 119
ActiveWindow.ScrollRow = 106
ActiveWindow.ScrollRow = 93
ActiveWindow.ScrollRow = 80
ActiveWindow.ScrollRow = 66
ActiveWindow.ScrollRow = 53
ActiveWindow.ScrollRow = 40
ActiveWindow.ScrollRow = 27
ActiveWindow.ScrollRow = 14
ActiveWindow.ScrollRow = 1
Range("A1").Select
Windows("Schauklasse_63.xls").Activate
ActiveWindow.Close
Application.Goto Reference:="sAUGER"
End Sub


Irgendwie kopiert Excel mir keinerlei Daten. An was kann dies nur leigen?


mfg,
sAUGER
Mitglied: 8644
8644 22.12.2006 um 09:45:13 Uhr
Goto Top
Moin,

nettes Makro, geht aber wesentlich kürzer! Frage: ändert sich die Anzahl der Einträge in den einzelnen Tabellen? Wenn nicht, brauchst du kein Makro! Gib mal kurz bescheid!

Psycho
Mitglied: sAUGER
sAUGER 22.12.2006 um 09:50:52 Uhr
Goto Top
Ja, die anzahl der Daten von den einzelnen Excel - Dateien ändert sich regelmäßig. Also zum Beispiel wird in der Datei "Schauklasse_1.xls" von Feld A2 bis Feld G10 Daten eingetragen und in der Datei von "Schauklasse_2.xls" werden Daten von A2 bis G20 eingetragen. Dies kann aber auch varieieren und plötzlich sind mehrere Daten eingetragen.

Also am einfachsten wäre es wenn die Makro automatisch die Daten sucht von jeder Datei und diese dann kopiert. Ich kann das ganze nicht eingrenzen, da die einzelnen Dateien immer undschiedlich lang gefüllt werden.


mfg,
sAUGER
Mitglied: AndreasHoster
AndreasHoster 22.12.2006 um 09:53:07 Uhr
Goto Top
Excel kann locker Daten aus anderen Excel Dokumenten übernehmen per Zellenformel:
='[test.xls]Tabelle1'!A1
Allerdings müssen die Dateien im selben Verzeichnis liegen.
Mitglied: 8644
8644 22.12.2006 um 10:02:38 Uhr
Goto Top
OK, dann ein Makro:

Sub auto_open()
    Dim I_Files As Integer
    Dim S_FileName As String
    
    For I_Files = 1 To 63
     S_FileName = "Schauklasse_" & CStr(I_Files) & ".xls"  
     Application.Workbooks.Open (S_FileName)
     Range("A1").Select  
     Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
     Selection.Copy
     Workbooks("Zusammenfassung_Schauklasse.xls").Activate  
     Range("A65536").End(xlUp).Offset(3, 0).Select  
     ActiveSheet.Paste
     Workbooks(S_FileName).Close
    Next I_Files
End Sub

Erklärung(sversuche)
Das Makro wird in der Tabelle Zusammenfassung_Schauklasse.xls erstellt und heisst auto_open. Damit wird gewährleistet, dass sie beim Öffnen der Datei ausgeführt wird.
 Dim I_Files As Integer
 Dim S_FileName As String
I_Files ist unser Zähler (bis 63)
S_FileName benötigen wir für den Dateinamen
  For I_Files = 1 To 63
   S_FileName = "Schauklasse_" & CStr(I_Files) & ".xls"  
   Application.Workbooks.Open (S_FileName)
Eine Zählschleife für 63 Durchgänge
Der Dateiname setzt sich aus dem gleichbleibendem Text und dem alktuellen Wert der Zählvariablen zusammen
Achtung! Hier solltest du deinen Pfad vor den Dateinamen setzen!
Nun wird die jeweilige Datei geöffnet
  Range("A1").Select  
  Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
  Selection.Copy
Wir setzen den Cursor an den Anfang der Tabelle
Wenn hier ein Tabellenkopf vorhanden ist, fängst du bei A2 an!
Jetzt wird bis zum letzen Satz der jeweiligen Tabelle markiert und alles in die Zwischenablage kopiert.
  Workbooks("Zusammenfassung_Schauklasse.xls").Activate  
  Range("A65536").End(xlUp).Offset(3, 0).Select  
  ActiveSheet.Paste
Wir aktivieren die Tabelle Zusammenfassung_Schauklasse.xls, suchen uns das Ende und springen drei Zeilen nach unten
Hier wird jetzt der Inhalt der Zwischenablage eingefügt.
 Workbooks(S_FileName).Close
 Next I_Files
Die jeweilige Datei wird geschlossen und die Schleife beginnt von vorn.

Achtung das Makro ist nicht getestet und kann deshalb fehlerhaft sein. Falls das der Fall ist, poste bitte die genaue Fehlermeldung!

Psycho
Mitglied: sAUGER
sAUGER 22.12.2006 um 10:05:15 Uhr
Goto Top
Ja, soweit ist es mir klar, doch leider ist dies zu umständlich, denn dies müsste ich dann ja zu jeder Schauklasse eintragen.

Geht dies nicht per Makro, dass Excel alles automatisch durchsucht und dann alle Daten untereinander in die neue Excel - Datei untereinander einträgt.


mfg,
sAUGER
Mitglied: 8644
8644 22.12.2006 um 10:07:33 Uhr
Goto Top
Siehe oben!

Psycho
Mitglied: sAUGER
sAUGER 22.12.2006 um 10:27:09 Uhr
Goto Top
So, nun habe ich folgenden Code eingebaut, aber es kommt eine Fehlermeldung:

Laufzeitfehler '1004'

'schauklasse_1.xls' wurde nicht gefunden. Überprüfen Sie die Rechtschreibung des Dateinamens, und überprüfen Sie, ob der Speicherort der Datei korrekt ist.

Wenn Sie versuchen, die Datei über die Liste der zuletzt geöffneten Dateien zu öffnen, stellen Sie sicher, dass die Datei nicht umbenannt, verschoben oder gelöscht wurde.


Wenn ich dann auf "Debuggen" klick ist folgende Zeile gelb markiert:

Application.Workbooks.Open (S_FileName)


Hier nochmals der komplette Code wo ich eingebaut habe:

Sub auto_open()
Dim I_Files As Integer
Dim S_FileName As String

For I_Files = 1 To 63
S_FileName = "Schauklasse_" & CStr(I_Files) & ".xls"
Application.Workbooks.Open (S_FileName)
Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
Workbooks("Zusammenfassung_Schauklasse_drucken.xls").Activate
Range("A65536").End(xlUp).Offset(3, 0).Select
ActiveSheet.Paste
Workbooks(S_FileName).Close
Next I_Files
End Sub


Und zur Info:

Meine 63 Dateien ("Schauklasse_1.xls" bis "Schauklasse_63.xls" liegen im folgenden Verzeichnis:
C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\int. Farbkanarienschau\Schauklassen_alte_Excel_Version\

Und die Datei "Zusammenfassung_Schauklassen_drucken.xls" liegt in folgendem Verzeichnis:

C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\int. Farbkanarienschau\Drucken\Schauklassen_alte_Excel_Version_drucken\


Was habe ich nun falsch gemacht ?


mfg,
sAUGER
Mitglied: 8644
8644 22.12.2006 um 10:30:00 Uhr
Goto Top
Du musst den Pfad der Quelle mit angeben!
S_FileName = "C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\int. Farbkanarienschau\Schauklassen_alte_Excel_Version\Schauklasse_" & CStr(I_Files) & ".xls"  

Psycho
Mitglied: sAUGER
sAUGER 22.12.2006 um 10:37:34 Uhr
Goto Top
Jetzt hat Excel angefangen zu kopieren, doch kurz danach kam folgender Fehler:

Laufzeitfehler '-2147352565 (8002000b)':

Der Index bezieht sich auf der Werte jenseits des Listenendes.


Wenn ich auf "Debuggen" klicke, ist folgende Zeile gelb markiert:

Workbooks("Zusammenfassung_Schauklasse_drucken.xls").Activate


Hier nochmals der komplette Code:

Sub auto_open()
Dim I_Files As Integer
Dim S_FileName As String

For I_Files = 1 To 63
S_FileName = "C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\int. Farbkanarienschau\Schauklassen_alte_Excel_Version\Schauklasse_" & CStr(I_Files) & ".xls"
Application.Workbooks.Open (S_FileName)
Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
Workbooks("Zusammenfassung_Schauklasse_drucken.xls").Activate
Range("A65536").End(xlUp).Offset(3, 0).Select
ActiveSheet.Paste
Workbooks(S_FileName).Close
Next I_Files
End Sub


mfg,
sAUGER
Mitglied: 8644
8644 22.12.2006 um 10:40:57 Uhr
Goto Top
Jep,

änder mal in der betreffenden Zeile
Workbooks("Zusammenfassung_Schauklasse_drucken.xls").Activate  
in
Windows("Zusammenfassung_Schauklasse_drucken.xls").Activate  

Psycho
Mitglied: sAUGER
sAUGER 22.12.2006 um 10:50:49 Uhr
Goto Top
Jetzt kommt folgender Fehler:

Laufzeitfehler '9':

Index außerhalb des gültigen Bereichs


Jetzt wenn ich auf "Debuggen" klicke ist folgende Zeile gelb markiert:

Windows("Zusammenfassung_Schauklasse_drucken.xls").Activate


Hier der komplette Code:

Sub auto_open()
Dim I_Files As Integer
Dim S_FileName As String

For I_Files = 1 To 63
S_FileName = "C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\int. Farbkanarienschau\Schauklassen_alte_Excel_Version\Schauklasse_" & CStr(I_Files) & ".xls"
Application.Workbooks.Open (S_FileName)
Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
Windows("Zusammenfassung_Schauklasse_drucken.xls").Activate
Range("A65536").End(xlUp).Offset(3, 0).Select
ActiveSheet.Paste
Workbooks(S_FileName).Close
Next I_Files
End Sub


mfg,
sAUGER
Mitglied: 8644
8644 22.12.2006 um 11:00:10 Uhr
Goto Top
Versuch mal, dem Blatt vorher einen Namen zu geben:
Unter
 Dim S_FileName As String
baust du ein:
 ActiveWorkbook.Windows(1).Caption = "XYZ"  
und die ensprechende Zeile ersetzt du durch
ActiveWorkbook.Windows("XYZ").Activate  
Psycho
Mitglied: sAUGER
sAUGER 22.12.2006 um 11:04:11 Uhr
Goto Top
Welchem Blatt soll ich einen Namen geben und wie / wo / was soll ich einfügen?

Sorry, ich kenne mich überhaupt nicht mit Makro aus.


mfg,
sAUGER
Mitglied: sAUGER
sAUGER 22.12.2006 um 11:08:39 Uhr
Goto Top
Meinst du das Blatt von der Datei "Zusammenfassung_Schauklassen_drucken.xls" ?

Diesem habe ich den Namen "Zusammenfassung_Schauklassen" gegeben.

Bei den anderen 63 Dateien hat jede Datei einen anderen Namen vom Blatt. Und unterschiedlich viele Blätter. Jedoch soll immer nur Daten von dem 1. Blatt aus den 63 Dateien kopiert werden ins 1. Blatt von der Datei "Zusammenfassung_Schauklassen_drucken.xls".

mfg,
sAUGER
Mitglied: 8644
8644 22.12.2006 um 11:34:35 Uhr
Goto Top
Das Vergeben des Namens machst du im Makro - genau so, wie ich es beschrieben habe!

Psycho
Mitglied: sAUGER
sAUGER 22.12.2006 um 11:38:21 Uhr
Goto Top
Sollte das Makro dann so aussehen:

Sub auto_open()
Dim I_Files As Integer
Dim S_FileName As String
ActiveWorkbook.Windows(1).Caption = "XYZ"

For I_Files = 1 To 63
S_FileName = "C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\int. Farbkanarienschau\Schauklassen_alte_Excel_Version\Schauklasse_" & CStr(I_Files) & ".xls"
Application.Workbooks.Open (S_FileName)
Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
Windows("Zusammenfassung_Schauklasse_drucken.xls").Activate
Range("A65536").End(xlUp).Offset(3, 0).Select
ActiveSheet.Paste
Workbooks(S_FileName).Close
Next I_Files
End Sub
Mitglied: 8644
8644 22.12.2006 um 11:48:23 Uhr
Goto Top
Fast!

Die Zeile
Windows("Zusammenfassung_Schauklasse_drucken.xls").Activate  
musst du durch
ActiveWorkbook.Windows("XYZ").Activate  
ersetzen!

Psycho
Mitglied: sAUGER
sAUGER 22.12.2006 um 12:06:07 Uhr
Goto Top
Es kommt immernoch die Laufzeitfehlermeldung 9

Hier der Code wo ich eingebaut habe in kompletter Form:

Sub auto_open()
Dim I_Files As Integer
Dim S_FileName As String

For I_Files = 1 To 63
S_FileName = "C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\int. Farbkanarienschau\Schauklassen_alte_Excel_Version\Schauklasse_" & CStr(I_Files) & ".xls"
Application.Workbooks.Open (S_FileName)
Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
ActiveWorkbook.Windows("XYZ").Activate
Range("A65536").End(xlUp).Offset(3, 0).Select
ActiveSheet.Paste
Workbooks(S_FileName).Close
Next I_Files
End Sub


Und folgende Zeile ist jetzt gelb markiert:

ActiveWorkbook.Windows("XYZ").Activate


mfg,
sAUGER
Mitglied: sAUGER
sAUGER 22.12.2006 um 12:08:19 Uhr
Goto Top
Sorry, das hier ist der komplette Code:

Sub auto_open()
Dim I_Files As Integer
Dim S_FileName As String
ActiveWorkbook.Windows(1).Caption = "XYZ"

For I_Files = 1 To 63
S_FileName = "C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\int. Farbkanarienschau\Schauklassen_alte_Excel_Version\Schauklasse_" & CStr(I_Files) & ".xls"
Application.Workbooks.Open (S_FileName)
Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
ActiveWorkbook.Windows("XYZ").Activate
Range("A65536").End(xlUp).Offset(3, 0).Select
ActiveSheet.Paste
Workbooks(S_FileName).Close
Next I_Files
End Sub
Mitglied: 8644
8644 22.12.2006 um 12:25:35 Uhr
Goto Top
So, jetzt eine getestete Fassung:

Sub auto_open()
 Dim I_Files As Integer
 Dim S_FileName As String

  ActiveWorkbook.Windows(1).Caption = "XYZ"  
  Range("A1").Select  
  Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
  Selection.Clear
  Application.CutCopyMode = False
  For I_Files = 1 To 63
    S_FileName = "C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\int. Farbkanarienschau\Schauklassen_alte_Excel_Version\Schauklasse_" & CStr(I_Files) & ".xls"  
 Application.Workbooks.Open (S_FileName)
 ActiveWorkbook.Windows(1).Caption = "ABC"  
 Range("A1").Select  
 Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
 Selection.Copy
 Windows("XYZ").Activate  
 If I_Files > 1 Then
 Range("A65536").End(xlUp).Offset(3, 0).Select  
 Else
  Range("A1").Select  
 End If
ActiveSheet.Paste
Application.CutCopyMode = False
Windows("ABC").Close  
Next I_Files
End Sub

Psycho
Mitglied: sAUGER
sAUGER 22.12.2006 um 15:02:39 Uhr
Goto Top
Hi !!!

Ich habe jetzt den Code 1:1 von dir übernommen. Er kopiert mir jetzt zar aus jeder Schauklasse etwas, aber nicht so wie ich es möchte bzw. benötige.

Ist schwer zu erklären wie das Ergebnis aussieht, aber ich versuche es einmal.

Jede Datei der 63 Stück hat in der ersten Zeile eine Überschrift. Zum Beispiel die Datei "Schauklasse_1.xls" hat die Überschrift "Schauklasse 1" und nur einen Reiter unten namens "Schauklasse 1". Die Datei "Schauklasse_2.xls" hat auch wie jeder der 63 Stück in der ersten Zeile eine Überschrift namens "Schauklasse 2" und nur einen Reiter wie ebenfalls alle 63 Schauklassen namens "Schauklasse 2". Die 2. Zeile ist bei Jeder Schauklasse ebenfalls gleich. In Feld A2 steht bei jeder Schauklasse "Käfig-Nr.", im Feld B2 steht bei jeder Schauklasse "Name", im Feld C2 steht bei jeder schauklasse "Vorname", im Feld D2 steht bei jeder Schauklasse "Farbname", im Feld E2 steht bei jeder Schauklasse "Punkte", im Feld F2 steht bei jeder Schauklasse "Harmonie" und im Feld G2 steht bei jeder Schauklasse "Gesamt".

Nur ab Zeile 3 steht bei jeder Schauklasse etwas anderes drin.


Zum testen steht beim jetztigen Beispiel ab Zeile 3 in keiner Schauklasse mehr etwas drin.

Der Code kopiert nun folgendermaßen:
Er nimmt aus der Datei "Schauklasse_1.xls" die Zeile 1 & die Zeile 2, kopiert diese in die Datei namens "XYZ", danach (es sieht zumindest so aus) lässt er 2 Zeilen frei und kopiert mir die ersten beiden Zeilen von der Datei "Schauklasse_2.xls" darunter. Danach lässt er wieder (sieht zumindest so aus) 2 Zeilen frei und kopiert mir die ersten beiden Zeilen von der Datei "Schauklasse_3.xls" darunter.

Jetzt habe ich in der Datei "Schauklasse_1.xls" zum testen in das Feld B3 folgendes reingeschrieben >> Zeile 3 <<, in das Feld B4 habe ich "Zeile 4" geschrieben, ins Feld B5 habe ich "Zeile 5" reingeschrieben, ins Feld 6 habe ich "Zeile 6" reingeschrieben usw.. bis Zeile 10, dort habe ich "Zeile 10" reingeschrieben.

In der Datei "Schauklasse_2.xls" habe ich das gleiche gemacht, aber in der Spalte "C". Also in Zeile 3 habe ich dort "Zeile 3" reingeschrieben, usw... bis zur Zeile 15, dort steht "Zeile 15" drin.

In der Datei "Schauklasse_3.xls" habe ich wieder das gleiche gemacht, aber in der Spalte "D". Also in Zeile 3 habe ich dort "Zeile 3" reingeschrieben, usw... bis zur Zeile 20, dort habe ich "Zeile 20" reingeschrieben.


Nun kopiert das Makro folgendermaßen <<
Es öffnet eine Datei namens "XYZ" wobei er dies nicht machen soll, sondern alle Daten aus den 63 Dateien sollen in die Datei "Zusammenfassung_Schauklassen_drucken.xls" kopiert werden (Diese Datei befindet sich in einem anderen Verzeichnis -> C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\int. Farbkanarienschau\Drucken\Schauklassen_alte_Excel_Version_drucken\Zusammenfassung_Schauklasen_drucken.xls)


Nachdem er dann fertig kopiert hat sieht die Datei namens "XYU" so aus:

In Zeile 1 steht der Inhalt der ersten Zeile aus der Datei "Schauklasse_1.xls". In Zeile 2 steht der Inhalt von der 2. Zeile aus der Datei "Schauklasse_2.xls". In Zeile 3 steht der Inhalt aus der Datei "Schauklasse_1.xls". In Zeile 4 steht der Inhalt aus der Datei "Schauklasse_1.xls".

Jetzt kommt der Fehler:
in Zeile 5 müsste er den Inhalt aus der Datei "Schauklasse_1.xls" schreiben, jedoch schreibt er dort die 1. Zeile aus der Datei "Schauklasse_2.xls". In Zeile 6 schreibt er den Inhalt von der Zeile 2 aus der Datei "Schauklasse_2.xls". In der Zeile 7 schreibt er nun den Inhalt aus der Zeile 3 von der Datei "Schauklasse_2.xls" (ins Feld C7). Ins Feld C8 schreibt er mir den Inhalt aus der Datei "Schauklasse_2.xls". Jetzt müsste er mir ins Feld C9 den Inhalt aus dem Feld C5 schreiben, jedoch schreibt er dort mir die erste Zeile von der Datei "Schauklasse_3.xls" rein.

usw...

Der Code sollte aber zum Beispiel alles aus der Datei "Schauklasse_1.xls" in die Datei "Zusammenfassung_Schauklassen_drucken.xls" kopieren (alle Zeilen wo ausgefüllt sind), danach soll er mir 2 Zeilen leer lassen und den kompletten Inhalt von der Datei "Schauklasse_2.xls" kopieren, und darunter nachdem er mir ja 2 Zeilen leer gelassen hat, in die Datei "Zusammenfassung_Schauklassen_drucken.xls" die Daten rein kopieren. Dann wieder 2 Zeilen leer lassen und nun die Daten von der nächsten Datei reinkopieren.

Bis er dann irgendwann alle 63 Dateien 1:1 untereinander mit jeweils 2 Leerzeilen dazwischen in die Datei "Zusammenfassung_Schauklassen_drucken.xls" kopiert hat.


Was ist also jetzt noch an diesem Code falsch ???


Sub auto_open()
Dim I_Files As Integer
Dim S_FileName As String

ActiveWorkbook.Windows(1).Caption = "XYZ"
Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Clear
Application.CutCopyMode = False
For I_Files = 1 To 63
S_FileName = "C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\int. Farbkanarienschau\Schauklassen_alte_Excel_Version\Schauklasse_" & CStr(I_Files) & ".xls"
Application.Workbooks.Open (S_FileName)
ActiveWorkbook.Windows(1).Caption = "ABC"
Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
Windows("XYZ").Activate
If I_Files > 1 Then
Range("A65536").End(xlUp).Offset(3, 0).Select
Else
Range("A1").Select
End If
ActiveSheet.Paste
Application.CutCopyMode = False
Windows("ABC").Close
Next I_Files
End Sub


mfg,
sAUGER
Mitglied: Pjordorf
Pjordorf 22.12.2006 um 20:31:33 Uhr
Goto Top
Das nennt sich ja jetzt "Excel Programmierung mit VBA für Fortgeschrittene".

Wow, und das in diesem Forum. Klasse.
Mitglied: sAUGER
sAUGER 22.12.2006 um 21:44:08 Uhr
Goto Top
Mag sein, aber ich hoffe das es noch jemand gibt, der mir bei meinem Problem weiterhelfen kann.

Es kann ja jetzt nach dem letzten Code nicht mehr viel falsch sein.


mfg,
sAUGER
Mitglied: bastla
bastla 22.12.2006 um 22:30:55 Uhr
Goto Top
Hallo sAUGER!

Wenn Psycho Dad geschrieben hat, dass er das Makro getestet hat, dann kannst Du davon ausgehen, dass dem auch so ist - allerdings hat er wohl andere (bessere - siehe unten) Testdaten verwendet.

Jetzt habe ich in der Datei "Schauklasse_1.xls" zum testen in das Feld B3 folgendes reingeschrieben >> Zeile 3 <<, in das Feld B4 habe ich "Zeile 4" geschrieben, ins Feld B5 habe ich "Zeile 5" reingeschrieben, ins Feld 6 habe ich "Zeile 6" reingeschrieben usw.. bis Zeile 10, dort habe ich "Zeile 10" reingeschrieben.

In der Datei "Schauklasse_2.xls" habe ich das gleiche gemacht, aber in der Spalte "C". Also in Zeile 3 habe ich dort "Zeile 3" reingeschrieben, usw... bis zur Zeile 15, dort steht "Zeile 15" drin.

In der Datei "Schauklasse_3.xls" habe ich wieder das gleiche gemacht, aber in der Spalte "D". Also in Zeile 3 habe ich dort "Zeile 3" reingeschrieben, usw... bis zur Zeile 20, dort habe ich "Zeile 20" reingeschrieben.

Wenn Du Deine Testdaten wie beschrieben eingetragen hast, liegt das Problem wohl in der Zeile
Range("A65536").End(xlUp).Offset(3, 0).Select  
Damit wird für die Daten der nächsten Datei der freie Bereich in Spalte A gesucht, wo Du ja anscheinend nur die Überschrift, aber keine Käfig-Nummern eingetragen hast - teste also nochmal wie oben beschrieben, aber trage in allen Zeilen der "Schauklasse"-Dateien auch etwas in Spalte A ein.

Es öffnet eine Datei namens "XYZ" wobei er dies nicht machen soll, sondern alle Daten aus den 63 Dateien sollen in die Datei "Zusammenfassung_Schauklassen_drucken.xls" kopiert werden (Diese Datei befindet sich in einem anderen Verzeichnis -> C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\int. Farbkanarienschau\Drucken\Schauklassen_alte_Excel_Version_drucken\Zusammenfassung_Schauklasen_drucken.xls)

ActiveWorkbook.Windows(1).Caption = "XYZ"  
öfnnet keine Datei, sondern benennt das Fenster der soeben geöffneten Datei - statt "XYZ" kannst Du natürlich auch "Zusammenfassung_Schauklassen" schreiben, musst dies aber dann auch in der Zeile
Windows("XYZ").Activate  
tun.

Das tatsächliche Öffnen der Datei geschieht über Deinen Link - das "auto_open"-Makro wird ja erst beim Öffnen ausgeführt. Damit dies erfolgen kann, muss es sich in der zu öffnenden Datei befinden (bei Dir also in C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\int. Farbkanarienschau\Drucken\Schauklassen_alte_Excel_Version_drucken\Zusammenfassung_Schauklasen_drucken.xls). Somit kannst Du sicher sein, dass die richtige Datei verwendet wird.
Vor dem "End Sub" könntest Du noch
ActiveWorkbook.Save
zum Speichern der soeben zusammen gestellten Daten einbauen.

HTH
bastla
Mitglied: sAUGER
sAUGER 24.12.2006 um 14:26:28 Uhr
Goto Top
Prima !!!

Es geht endlich genau so wie ich es mir vorgestellt habe.

Jetzt nur noch zur Verbesserung:
Gibt es eine Möglichkeit, bei allen 63 Dateien die Spalte "A" so zu formatieren (programmieren), dass wenn sich in einer Spalte (zum Beispiel B, C, D, usw...) Daten drin stehen, dass dann auch in dieser Zeile bei Spalte "A" Daten eingegeben werden müssen, ansonsten kommt eine "Fehlermeldung oder so was in der Art"?

Wenn dies machbar wäre, dann würde nämlich der Code von der Datei "Zusammenfassung_
Schauklassen.xls" immer richtig arbeiten bzw. funktionieren.

Und noch eine kurze Frage?
Wenn in den 63 Dateien Formeln enthalten sind, übernimmt der Code beim kopieren dann auch die Formeln mit oder kopiert er rein nur die Daten von den einzelnen Feldern?


mfg,
sAUGER
Mitglied: bastla
bastla 24.12.2006 um 15:13:40 Uhr
Goto Top
Hallo sAUGER!

... dass dann auch in dieser Zeile bei Spalte "A" Daten eingegeben werden müssen, ansonsten kommt eine "Fehlermeldung oder so was in der Art"?

Das folgende Makro ist in jeder einzelnen Datei der "Tabelle1" zuzuordnen (mit Alt-F11 den VBA-Editor öffnen, dort links oben im Projekt-Editor die "Tabelle1" doppelklicken und im Code-Fenster den folgenden Code einfügen):
Private Sub Worksheet_Change(ByVal Target As Range)
If Not IsEmpty(Target) Then
    If Target.Column <> 1 Then
        If IsEmpty(Cells(Target.Row, 1)) Then
            MsgBox "Eintrag in Spalte A fehlt noch!", vbCritical  
            Cells(Target.Row, 1).Select
        End If
    End If
End If
End Sub
Das Makro überprüft bei allen Eingaben, ob die Spalte A dieser Zeile noch leer ist, erinnert gegebenen Falls an den fehlenden Eintrag in Spalte A und setzt den Cursor in die entsprechende Zelle (wobei der soeben vorgenommene Eintrag in zB Spalte D jedoch erhalten bleibt).

Wenn in den 63 Dateien Formeln enthalten sind, übernimmt der Code beim kopieren dann auch die Formeln mit oder kopiert er rein nur die Daten von den einzelnen Feldern?
Wie Du bei Deinen Tests feststellen kannst, werden in der aktuellen Version von Psycho's Makro auch Formeln kopiert - ist dies nicht gewünscht, so müsstest Du die Zeile
ActiveSheet.Paste
durch
ActiveSheet.PasteSpecial Paste:=xlPasteValues
ActiveSheet.PasteSpecial Paste:=xlPasteFormats
ersetzen.

Grüße
bastla
Mitglied: sAUGER
sAUGER 25.12.2006 um 12:21:13 Uhr
Goto Top
Danke für die Hilfe !!!

Jetzt habe ich nur noch eine kleine Frage:
Gibt es einen Code den ich in jede der 63 Dateien einbauen kann, der automatisch nach einer gewissen Zeit (von mir im Code festlegbar) die gerade geöffnete Datei abspeichert?

Also, dass zum Beispiel das Dokument alle 10 Sekunden automatisch abgespeichert wird.


mfg,
sAUGER
Mitglied: bastla
bastla 25.12.2006 um 22:47:36 Uhr
Goto Top
Hallo sAUGER!

Ausgehend von einem hier zu findenden Code-Beispiel hätte ich für das automatische Speichern die folgende Lösung anzubieten:
Im Codefenster von "Diese Arbeitsmappe":
Sub Workbook_Open()
Speichere
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Beende
End Sub
In einem Modul (falls im Projekt-Explorer für die aktuelle Datei keine "Module" existieren, über Menü "Einfügen / Modul" ein Modul erstellen und doppelklicken, um das Code-Fenster zu öffnen):
Const sIntervall As String = "00:00:10" '10 Sekunden  
Const sProc As String = "Speichere"  
Public vNextTime As Variant

Sub Speichere()
vNextTime = Now + TimeValue(sIntervall)
Application.OnTime vNextTime, sProc
ThisWorkbook.Save
End Sub

Sub Beende()
Application.OnTime vNextTime, sProc, , False
End Sub
Um das automatische Speichern zu verhindern, muss das Makro "Beende" ausgeführt werden (Anmerkung: Beim Schließen der Datei wird versucht, das Autospeichern zu beenden - wurde dieses bereits manuell beendet, wird die Fehlermeldung "Die Methode 'OnTime' für das Objekt '_Application' ist fehlgeschlagen" ausgegeben. Mit der Schaltfläche "Beenden" kann in diesem Fall die Datei geschlossen werden).

Inwieweit das im Hintergrund auf seinen Einsatz "lauernde" Autospeicher-Makro die Performance beeinträchtigt (und ob 10 Sekunden nicht etwas knapp bemessen sind), musst Du selbst herausfinden.

Grüße
bastla