Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: kopieren in eine andere Excel-Datei

kopieren in eine andere Excel-Datei
31.08.2017 15:01:15
Günter
Hallo zusammen,
ich möchte aus einer Excel-Datei mit 5 Tabellenblättern 4 Tabellenblätter in eine andere bestehende Excel-Datei kopieren.
Mein Code um ein sheet zu kopieren sieht wie folgt aus:
##########################################################

Sub share_aktualisieren()
strpfad = ThisWorkbook.Path
Sheets("Systemdaten_PI").Select
Range("A1:F" & ActiveSheet.UsedRange.Rows.Count).SpecialCells(xlCellTypeVisible).Copy
Workbooks.Open Filename:=strpfad & "\share.xlsx" 'xls.Datei öffnen
Worksheets("Systemdaten_PI").Activate 'Arbeitsblatt Aktiv setzen
Range("A1").PasteSpecial Paste:=xlPasteValues 'Wert aus A1:F einfügen
ActiveWorkbook.Save 'share.xlsx sichern
Workbooks.Close 'share.xlsx scliessen"
Sheets("roh").Select
Range("A1").Select
End Sub

##########################################################
Das Sichern und Schliessen der Datei "share.xlsx" funktioniert, aber:
Wo stehe ich jetzt programmtechnisch? Wieder auf der Ursprungsdatei "Daten.xlsm", oder?! Warum werde ich jetzt von Excel gefragt, ob ich die Änderungen an Daten.xlsm speichern möchte?
Und wie kopiere ich jetzt weitere Sheets aus Daten.xlsm in share.xlsx. Wenn ich workbooks.open erneut aufrufe, bekomme ich die Meldung, dass das workbook schon geöffent ist?
Viele Grüße
Günter
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: kopieren in eine andere Excel-Datei
31.08.2017 15:18:49
mmat
Hallo,
Falsch:
Workbooks.Close 'share.xlsx scliessen"
versucht, alle offenen Arbeitsmappen zu schließen. Für deine Zwecke wäre wohl
ActiveWorkbook.close false
geeignet.
Danach ist wieder die Mappe aktive, die vor dem befehl "Workbooks.Open usw..." aktiv war.
vg, MM
Anzeige
AW: kopieren in eine andere Excel-Datei
31.08.2017 15:31:23
Günter
Vielen Dank für die schnelle Hilfe.
Bin nicht so der VBA-Spezialist und bin in dem Thema etwas eingerostet, aber ich arbeite daran :-)
Gruß
Günter
AW: kopieren in eine andere Excel-Datei
31.08.2017 15:41:26
mmat
Ich hab ganz vergessen, dass du noch mehrere Arbeitsblätter kopieren möchtest. Das erfordert einen etwas umfangreicheren Umbau und ein lösen von aktiven Elementen. Ungefähr so:
Sub share_aktualisieren()
Dim Quelle As Workbook, Ziel As Workbook, strpfad As String
strpfad = ThisWorkbook.path
Set Quelle = ActiveWorkbook
Quelle.Sheets("Systemdaten_PI").Range("A1:F" & ActiveSheet.UsedRange.Rows.Count).SpecialCells( _
xlCellTypeVisible).Copy
Set Ziel = Workbooks.Open(FileName:=strpfad & "\share.xlsx") 'xls.Datei öffnen
Ziel.Worksheets("Systemdaten_PI").Range("A1").PasteSpecial Paste:=xlPasteValues 'Wert aus A1:F  _
einfügen
Quelle.Sheets("Quellblatt").Range("Quellbereich").Copy 'die nächste
Ziel.Worksheets("Zielblatt").Range("A1").PasteSpecial Paste:=xlPasteValues 'Wert einfügen
'usw ...
Ziel.Save 'share.xlsx sichern
Ziel.Close False 'share.xlsx scliessen"
Quelle.Sheets("roh").Select
Range("A1").Select
End Sub
vg, MM
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Excel-Blätter in eine andere Datei kopieren


Schritt-für-Schritt-Anleitung

Um ein Excel-Arbeitsblatt in eine andere Datei zu kopieren, kannst du die folgenden Schritte befolgen:

  1. Öffne die Quell-Datei: Stelle sicher, dass die Excel-Datei, aus der du kopieren möchtest, geöffnet ist.

  2. Starte den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf "VBAProject (deinDateiname.xlsx)" > Einfügen > Modul.

  4. Füge den folgenden VBA-Code ein:

    Sub share_aktualisieren()
       Dim Quelle As Workbook, Ziel As Workbook, strpfad As String
       strpfad = ThisWorkbook.Path
       Set Quelle = ActiveWorkbook
       Set Ziel = Workbooks.Open(Filename:=strpfad & "\share.xlsx") ' Ziel-Datei öffnen
    
       ' Kopiere das erste Blatt
       Quelle.Sheets("Systemdaten_PI").Range("A1:F" & ActiveSheet.UsedRange.Rows.Count).Copy
       Ziel.Worksheets("Systemdaten_PI").Range("A1").PasteSpecial Paste:=xlPasteValues
    
       ' Kopiere weitere Blätter
       Quelle.Sheets("Quellblatt").Range("Quellbereich").Copy
       Ziel.Worksheets("Zielblatt").Range("A1").PasteSpecial Paste:=xlPasteValues
    
       ' Speichere und schließe die Zieldatei
       Ziel.Save
       Ziel.Close False
    End Sub
  5. Führe das Makro aus: Klicke auf F5, um das Makro auszuführen.


Häufige Fehler und Lösungen

  • Fehler: "Workbook already open": Wenn du versuchst, eine Arbeitsmappe zu öffnen, die bereits geöffnet ist, erhältst du diese Fehlermeldung. Achte darauf, die Datei nur einmal zu öffnen.

  • Fehler beim Schließen der Datei: Verwende ActiveWorkbook.Close False, um nur die aktuelle Arbeitsmappe zu schließen, anstatt alle offenen Arbeitsmappen.

  • Kopieren von nicht sichtbaren Zellen: Wenn du versuchst, Zellen zu kopieren, die ausgeblendet sind, stelle sicher, dass du die SpecialCells(xlCellTypeVisible) Methode verwendest, um nur sichtbare Zellen zu kopieren.


Alternative Methoden

Wenn du kein VBA verwenden möchtest, kannst du auch manuell kopieren:

  1. Kopiere das Blatt: Rechtsklicke auf die Registerkarte des gewünschten Arbeitsblattes und wähle "Verschieben oder Kopieren".
  2. Wähle die Zieldatei: Im Dropdown-Menü wähle die Excel-Datei aus, in die du das Blatt kopieren möchtest.
  3. Klicke auf "Kopie erstellen": Setze das Häkchen und klicke auf "OK".

Diese Methode funktioniert gut, wenn du nur ein oder zwei Blätter kopieren möchtest.


Praktische Beispiele

  1. Kopieren eines Blattes aus einer anderen Datei: Wenn du ein Excel-Blatt von einer Datei in eine andere kopieren möchtest, kannst du die oben genannten VBA-Skripte anpassen, um spezifische Blätter auszuwählen.

  2. Duplizieren einer Excel-Datei: Du kannst eine Excel-Datei duplizieren, indem du einfach die Datei im Explorer kopierst und die Kopie umbenennst.


Tipps für Profis

  • Verwende VBA-Fehlerbehandlung: Implementiere Fehlerbehandlung in dein Skript, um unerwartete Fehler abzufangen und besser zu steuern.

  • Automatisiere den Prozess: Wenn du regelmäßig Excel-Blätter in andere Dateien kopieren musst, kannst du das Makro so anpassen, dass es automatisch bei einem bestimmten Ereignis ausgeführt wird (z.B. beim Öffnen einer Datei).

  • Nutze Datenüberprüfung: Überprüfe, ob die Zieldatei existiert, bevor du versuchst, sie zu öffnen, um Fehler zu vermeiden.


FAQ: Häufige Fragen

1. Wie kann ich mehrere Blätter auf einmal kopieren?
Du kannst die oben gezeigte VBA-Methode anpassen, um mehrere Copy-Befehle für jedes Blatt hinzuzufügen.

2. Was ist der Unterschied zwischen "Kopieren" und "Einfügen"?
"Kopieren" erstellt eine Kopie der Inhalte, während "Einfügen" die Inhalte an der gewünschten Stelle platziert.

3. Funktioniert das auch in Excel 365?
Ja, die genannten Methoden funktionieren in Excel 365 sowie in anderen gängigen Excel-Versionen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige