Microsoft Excel

Herbers Excel/VBA-Archiv

Sheets kopieren ersetzen | Herbers Excel-Forum


Betrifft: Sheets kopieren ersetzen von: Einzel
Geschrieben am: 12.11.2009 14:50:09

Hallo
Ich habe zwei Mappen Mappe 1 und 2
in jeder habe ich 4 Sheets 1, 2, 3, 4.
Nun möchte ich per Makro die Sheets aus Mappe 2
kopieren und in Mappe 1 ersetzen (überschreiben)
Habe mal diesen Code aufgenommen:

Sub Makro1()
    Windows("20091112.xlsx").Activate
    Sheets(Array("Auftragsdaten", "Bunddaten", "Analysen", "Analysen Details")). _
        Select
    Application.CutCopyMode = False
    Sheets(Array("Auftragsdaten", "Bunddaten", "Analysen", "Analysen Details")).Copy _
        Before:=Workbooks("S50-Analyse-1.xlsx").Sheets(1)
End Sub
Damit geht es aber nicht er fügt nur ne Kopie hinzu.
weis jemand was ich am Code ändern muss?
MfG
Stephan

  

Betrifft: Hä? Warum nicht... von: Björn B.
Geschrieben am: 12.11.2009 14:56:33

...einfach unter anderem Namen speichern?

Was soll das denn bringen? Lösch die alte Datei und speichere die Mappe 2 mit neuem Namen (von Mappe1) ab.

Das ist doch viel einfacher wie 4 einzelne Blätter löschen und dann wieder 4 Blätter kopieren?

Das verstehe ich nicht.

Aber gut, Excel kann keine Blätter doppelt einfügen bzw. ersetzen. Du musst also zuerst die alten Blätter löschen und dann die neuen kopieren. DAnn sollte es klappen.

Gruß
Björn


  

Betrifft: AW: Hä? Warum nicht... von: Einzel
Geschrieben am: 12.11.2009 14:59:53

Nun ja dies ist nur ein Teil von einem Code den ich erstellen will.
Davor und danach wird es noch andere Schritte geben.
Deshalb will ich das die Sheets ersetzt werden.
MfG
Stephan


  

Betrifft: AW: Hä? Warum nicht... von: Björn B.
Geschrieben am: 12.11.2009 15:02:08

und? Klappt das jetzt, wie ich beschrieben habe?
(Vorher löschen)


  

Betrifft: AW: Hä? Warum nicht... von: Einzel
Geschrieben am: 12.11.2009 20:23:33

Das beantwortet aber leider meine Frage nicht. Geht das mit einem Code und wenn ja wie.
MfG
Stephan
Danke


  

Betrifft: Doch, tut es... von: Björn B.
Geschrieben am: 13.11.2009 07:40:43

Hallo,

es beantwortet Deine Frage sehr wohl.
Ich habe Dir geschrieben, was Du machen musst.
Du hast Deinen Code sicherlich mit dem Makrorekorder aufgenommen.
Also, warum zeichnest Du nicht das auf, was ich dir geschrieben habe? Erwartest Du jetzt von mir, dass ich die Arbeit für dich mache?

Ich habe Dir gesagt, dass es so, wie du es machst nicht funktioniert. Das funktioniert ja auch nicht, wenn du es von Hand machst (also ohne Code). Dort musst Du auch erst die alten Reiter löschen.

Also was um alles in der Welt ist an Deiner Frage nicht beantwortet???

weis jemand was ich am Code ändern muss?

Das es mit einem Code geht, habe ich Dir geschrieben und was Du ändern musst auch.
Was fehlt zu Deinem Glück?
Eine Antwort, mit der Lösung, die du dann nicht verstehst, in Deine Mappe kopierst und Dich dafür bedankst, dass es funktioniert? Und das nächste Mal kommst du wieder mit der gleichen Frage ins Forum und es muss wieder einer für Dich arbeiten? Also wenn Du das möchtest, dann empfehle ich Dir diese Seite, da bist Du dann besser aufgehoben:
https://www.herber.de/develop.html

Dieses Forum ist für Menschen, die VBA lernen / verstehen lernen wollen!

Außerdem ist das jetzt von mir die 3. Nachricht, und ich frage zum 2. Mal nach, wo das Problem ist, bzw. ob Dir das geholfen hat. Wie mir scheint, hast Du das nicht mal getestet, bzw. Dir Gedanken dazu gemacht.
Sonst würde ja ne konkrete Frage zurückkommen oder ein "Ja, so klappt es".

Wenn du also das gemacht hast, was ich schon in der 1. Antwort geschrieben habe, dann darfst du dich nochmal melden und wenn es dann noch Probleme gibt, dann helfe ich auch gerne.

Gruß
Björn B.


  

Betrifft: AW: Doch, tut es... von: Sprekelmeyer
Geschrieben am: 13.11.2009 19:58:00

Also nun mal langsam. Ich will keine Auftragsprogrammierung und ich will auch keinen für
mich arbeiten lassen. Wie du so schön sagst.
Ich habe eine Frage gestellt und von dir diese Antworten dazu bekommen:

"Was soll das denn bringen? Lösch die alte Datei und speichere die Mappe 2 mit neuem Namen (von Mappe1) ab.
Das ist doch viel einfacher wie 4 einzelne Blätter löschen und dann wieder 4 Blätter kopieren?
Das verstehe ich nicht."

1:Was soll das denn bringen?
Also was das bringen soll sagt doch schon mein Code.
4 Sheets kopieren und in einer anderen Master Mappe einfügen und ersetzen.

2:Lösch die alte Datei und speichere die Mappe 2 mit neuem Namen (von Mappe1) ab.
Ich kann die alte Datei nicht löschen weil ich sie noch brauche.

3.Das ist doch viel einfacher wie 4 einzelne Blätter löschen und dann wieder 4 Blätter kopieren?
Ich will die alten Sheets ja gar nicht löschen sondern überschreiben.

4:Das verstehe ich nicht.
Ja ich glaube wir reden anenander vorbei.

Last bat not least.
Erwartest Du jetzt von mir, dass ich die Arbeit für dich mache?
Nein das tue ich nicht, ein Forum ist dafür da um Fragen zu stellen und antworten zu bekommen.
Wenn du das nicht willst dann lass es.

Trotzdem danke für deinen Lösungsweg, der Funktioniert aber den meinte ich nicht.

MfG
Stephan


  

Betrifft: AW: Doch, tut es... von: Björn B.
Geschrieben am: 15.11.2009 18:40:41

Hallo,

manchmal verstehe ich Euch Fragesteller nicht. Du hast immer noch nicht geschrieben, warum Du das genau so machen willst.

Du schreibst, du willst die Sheets ersetzen. Nun, löschen und dann kopieren ist ersetzen. Das machen manche Programme einfach in einem Schritt beim "Ersetzen", aber es ist nix anderes!
Excel macht das z.B. beim Zellen verschieben, oder wenn Du in Windows im Explorer eine Datei einfügen möchtest, die es schon gibt. Dann wirst Du gefragt, ob Du das ersetzen möchtest.
Diese Programm oder Systeme löschen aber erst das alte und fügen dann das neue ein, anders geht das nicht. Wie denn auch??

Ich habe auch nicht geschrieben, dass Du die alte Datei löschen sollst, sondern die einzelnen Sheets, bevor du die neuen reinkopierst.

Ich habe Dir geschrieben, Du sollst mal versuchen, das von Hand zu machen... Hierzu gibt es keinen Befehl.

Warum musst Du das ganze Blatt kopieren? Reichen nicht die Zellen? Das wäre auch einfacher.

Oder warum verknüpfst Du die 2 Dateien nicht miteinander? Das wäre das allereinfachste.
Da musst du nur 1mal die Verknüpfungen machen, und es wird dann immer aktualisiert?

Falls Du damit Dein Problem nicht lösen konntest, würde ich mich freuen, noch mal von Dir zu lesen.
Nix für ungut.

Gruß
Björn


  

Betrifft: AW: Doch, tut es... von: Einzel
Geschrieben am: 15.11.2009 20:30:20

Hallo,
habe es jetzt so gelöst. Mit überschreiben der Zellen wie du geschrieben hast.
So funktionierts.

Dateiname = ActiveWorkbook.Name 'Quellmappe

ActiveSheet.Select
Sheets("Auftragsdaten").Select
Cells.Select
Selection.Copy

Windows("S50-Analyse-1.xlsm").Activate
Sheets("Auftragsdaten").Select
Cells.Select
ActiveSheet.Paste
Range("A1").Select

Windows(Dateiname).Activate
Sheets("Bunddaten").Select
Cells.Select
Selection.Copy

Windows("S50-Analyse-1.xlsm").Activate
Sheets("Bunddaten").Select
Cells.Select
ActiveSheet.Paste
Range("A1").Select
Danke
MfG
Stephan


  

Betrifft: das geht viel kürzer... von: Björn B.
Geschrieben am: 15.11.2009 22:12:24

Hallo Stephan,

da bin ich froh, dass ich Dir doch noch helfen konnte.
Und ich kann Dir das ganze noch stark verkürzen:

ActiveWorkbook.Sheets("Auftragsdaten").Cells.Copy Workbooks("S50-Analyse-1.xlsm").Sheets(" _
Auftragsdaten").Cells
  ActiveWorkbook.Sheets("Bunddaten").Cells.Copy Workbooks("S50-Analyse-1.xlsm").Sheets("Bunddaten").Cells
Noch besser wird es, wenn Du statt "Activeworkbook" dir Quellmappe direkt ansprichst, also z.B.:
Workbooks("Quellmappe.xls"). Weiß nicht, wie die Datei bei Dir heißt, deshalb hab ich es noch nicht mit eingebaut.

Du kannst bei VBA direkt nach dem Copy Befehl das Ziel schreiben. Außerdem kann man sich so die Makiererei (.Select / .Activate) sparen.
Dadurch wird es auch viel schneller.
Macht jetzt bei deinen 2 Blätter nicht viel Zeit aus, wenn Du aber mal Zeilenweise kopierst, dann kommen schnell einige 100 Kopieraktionen zusammen, und dann merkt man es deutlich (weniger als die Hälfte der Zeit!!!).

Hoffe, das klappt bei Dir.

Rückmeldung wäre nett.

Gruß
Björn B.


Beiträge aus den Excel-Beispielen zum Thema "Sheets kopieren ersetzen"