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:
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
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 Substatt 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
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:
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
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
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

