Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

makro-gruppe tabellenblätter kopieren...





Frage

hallo ihr vba spezies, will mehrere tabellenblätter (Gruppe) in eine andere arbeitsmappe kopieren. hab folgendes makro aufgezeichnet, bleibt aber hängen. irgendwie gibt's probleme bei dem gekennzeichneten bereich. [code] Sub testaktuell() ' ' testaktuell Makro ' Makro am 14.09.2004 von conny aufgezeichnet ' ' Windows("Bericht aktuell gesamt.xls").Activate ActiveWindow.ScrollWorkbookTabs Position:=xlLast Sheets(Array("Ber LPD", "Ber BP", "Ber DL", "Ber KPI", "Ber VPI", "Ber SBS", _ "Ber SBL", "Ber SLS", "Ber MZG", "Ber WND", "Ber NK", "Ber HOM", "Ber LKA 1", _ "Ber LKA 2", "Ber LKA 3", "Ber LKA 4", "Ber zwWuG", "Ber zwFoViB", "Ber zwVD", _ "Ber zwDruck", "Ber zwWD", "Ber zwKfD", "Ber zwPS", "Ber zwFD", "Ber fbWuG")). _ Select Sheets("Ber LPD").Activate Sheets(Array("Ber fbFoViB", "Ber fbDruck", "Ber fbHD", "Ber fbRD", _ "Ber fbSchreiner", "Ber fbKfD", "Ber fbTankSLS", "Ber fbWD", "Ber MfIS", "Ber FHSV", _ "Ber SEE", "Ber PHPR", "Ber NzZ", "Ber ZRW")).Select Replace:=False Workbooks.Add Template:= _ "C:\WINDOWS\Profiles\wd\Anwendungsdaten\Microsoft\Vorlagen\Berichte gesamt.xlt" Sheets("BP").Select ActiveWindow.ScrollWorkbookTabs Position:=xlLast Sheets(Array("BP", "DL", "KPI", "VPI", "SBS", "SBL", "SLS", "MZG", "WND", "NK", "HOM", _ "LKA 1", "LKA 2", "LKA 3", "LKA 4", "zwWUG", "zwFoViB", "zwVD", "zwDruck", "zwWD", _ "zwKfD", "fbWUG", "fbFoViB", "fbDruck", "fbHD")).Select Sheets("BP").Activate Sheets(Array("fbRD", "fbSchreiner", "fbKfD", "fbTankSLS", "fbWD", "MfIS", "FHSV", _ "SEE", "PHPR", "NzZ", "ZRW")).Select Replace:=False ActiveWindow.SelectedSheets.Delete [b]Windows("Bericht aktuell gesamt.xls").Activate Sheets(Array("Ber LPD", "Ber BP", "Ber DL", "Ber KPI", "Ber VPI", "Ber SBS", _ "Ber SBL", "Ber SLS", "Ber MZG", "Ber WND", "Ber NK", "Ber HOM", "Ber LKA 1", _ "Ber LKA 2", "Ber LKA 3", "Ber LKA 4", "Ber zwWuG", "Ber zwFoViB", "Ber zwVD", _ "Ber zwDruck", "Ber zwWD", "Ber zwKfD", "Ber zwPS", "Ber zwFD", "Ber fbWuG", _ "Ber fbFoViB", "Ber fbDruck", "Ber fbHD", "Ber fbRD", "Ber fbSchreiner", "Ber fbKfD" _ , "Ber fbTankSLS", "Ber fbWD", "Ber MfIS", "Ber FHSV", "Ber SEE", "Ber PHPR", _ "Ber NzZ", "Ber ZRW")).Copy Before:=Workbooks("Berichte gesamt1").Sheets(2)[/b] Sheets("LPD").Select ActiveWindow.SelectedSheets.Delete Windows("Bericht aktuell gesamt.xls").Activate Sheets("Ber LPD").Select ActiveWorkbook.Save ActiveWindow.Close ActiveWindow.Close Windows("Berichte Anwendungsdatei.xls").Activate End Sub [/code] hoffentlich kommt da einer klar!! vielen dank für die hilfe schon mal im voraus. conny

Antwort 1 von sicci

Hallo Conny,

wenn Du nur Tabellen in eine andre Mappe kopieren willst hier ein Beispiel ohne die ganzen Selects und Activates, die der Recorder immer aufzeichnet:

Sub conny()
Sheets(Array("Tabelle1", "Tabelle2", "Tabelle3")).Copy _
before:=Workbooks("Mappe2").Sheets("Tabelle1")
End Sub

statt des 'before:=' kannst Du auch 'after' schreiben - die Mappe 2, also die, in die hineinkopiert werden soll, muß geöffnet sein.

In Deinem aufgezeichneten Makro machst Du allerdings etwas mehr (Dateien zufügen, Tabellen löschen).
Bei soo vielen zu kopierenden Tabellen taucht auch die Frage auf: sind das ausgewählte oder alle Tabellen einer Mappe, die in die andre kopiert werden sollen? Wenn's alle sind empfiehlt sich eine Zählschleife, um die vielen Namensangaben zu umgehen. Du müßtest also, wenn Dir obiges nicht reicht, nochmal genauer sagen, was Du möchtest.

Gruß sicci

Antwort 2 von grünsängerin

hallo sicci,

vielen dank für deine mühe, werd' versuchen es umzusetzten.
leider hab' ich von vba wirklich keine ahnung und weiß überhaupt nicht was eine zählschleife ist und wie sie funktioniert. hoffe ich find's irgendwann mal raus. aber vielleicht kann mir das jemand hier ja mal mit ganz einfachen worten erklären??? das wäre echt super!!!!

es sind alle tabellen einer mappe.
ich übernehme monatlich daten aus einer schnittstelle. eine mappe mit mehreren tabellen, übernimmt durch sverweise die daten. diese mappe möchte ich mit allen tabellen monatlich mit zellinhalten als werte abspeichern.

vielen dank für deine hilfe

conny

Antwort 3 von Sneaky601

Hallo Conny,

eine Zählschleife durchläuft einfach einen festgelegten Zahlen bereich (z.B. von 1 bis 10) in beliebigen Schritten (z.B. 1,2,3 usw. oder 1,3,5 bzw. 2,4,8). Kann man halt beliebig festlegen.
Kleines Beispiel:

for i=1 to 10
  sheet1.cells(i,1).value=i
next i

Diese Schleife fängt bei 1 (i=1) an und erhöht sich bei jedem next i um 1.
Der Code, der dazwischensteht, wird bei jedem Durchlauf ausgeführt, in diesem Fall wird in Tabelle 1, Spalte A angefangen bei Zeile 1 der Wert der Zählvariablen aus unserer Zählschleife ausgegeben.

Gruß Sneaky

Antwort 4 von grünsängerin

hallo sneaky,

vielen dank für die erklärung, das hab' ich verstanden.
bei der umsetzung macht's aber error bei mir im hirn.
wenn ich nun 1 mappe mit 3 tabellen hab' und in eine neue mappe diese tabellen auslesen will, muss ich doch sicher festlegen von wo nach wohin ausgelesen werden soll oder?
im voraus bitt' ich um vergebung, aber ich hab' echt keinen plan von der sache ;-)

vielen dank conny