Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Bereiche in andere Arbeitsmappe kopieren

Bereiche in andere Arbeitsmappe kopieren
12.07.2006 15:43:08
Thorsten
Hallo Experten!
Ich habe folgendes Problem:
Ich habe verschiedene Arbeitsmappen mit jeweils einem Tabellenblatt (immer identisch aufgebaut). Hier werden in den Bereichen A2-L2, A5-L5 und A9- L9 Daten eingegeben und diese möchte ich in eine andere Arbeitsmappe (besteht bereits) kopieren. Soweit so gut.
Die Daten aus dem Bereich A2-L2 sollen in das erste Tabellenblatt der neuen Arbeitsmappe kopiert werden. Dort ebenfalls in den Bereich A2-L2. Die Daten aus A5-L5 in das zweite Tabellenblatt usw. Hierbei müssen alle Formate aus der Ursprungsmappe übernommen werden und vor allem habe ich nun noch folgendes Problem:
Habe ich den ersten Datensatz kopiert, kommt die nächste Arbeitsmappe (gleicher Aufbau) und auch diese Datensätze sollen in die andere Arbeitsmappe nach dem gleichen Schmema kopiert werden. Allerdings immer in die Zeile unter dem bereits vorhandenden Datensatz. Quasi ein Zusammenfügen aller Daten.
Das kriege ich nicht hin. Ich hoffe, ihr könnt mir da weiterhelfen und habt eine Lösung parat. Vielen DANK!
Anzeige

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

Betreff
Datum
Anwender
Anzeige
Ansätze habe ich ja...
13.07.2006 10:29:33
Thorsten
Hallo Experten. Schade, dass ich keine Rückmeldungen bekommen habe. Nicht, dass ihr denkt, ich will es komplett von euch gelöst bekommen. Ein wenig habe ich ja selber versucht und die reine Kopie in meine Zieldatei klappt auch:

Sub TestFürKopieInZielmappe()
Range("A2:L2").Select
Selection.Copy
Windows("Zielmappe.xls").Activate
ActiveSheet.Paste
Windows("Datenmappe.xls").Activate
Range("A5:L5").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Zielmappe.xls").Activate
Sheets("Tabelle2").Select
ActiveSheet.Paste
Windows("Datenmappe.xls").Activate
Range("A8:L8").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Zielmappe.xls").Activate
Sheets("Tabelle3").Select
Range("A2").Select
ActiveSheet.Paste
End Sub

Allerdings ist mein Problem weiterhin, dass die Mappen aus denen die Daten kopiert werden a) alle unterschiedliche Namen haben und b) müssen die Einträge in der Zieldatei immer in die Zeile unter den letzten Eintrag kopiert werden.
Hatte gehofft, dass mir diese

Function dabei helfen würde, aber weiß nicht wie ich das genau einbinden/kombinieren müsste bzw. ob es mein Problem lösen kann. Brauche echt eure Hilfe! Dank im Voraus!
Option Explicit

Function lngLetzteZeile() As Long
Dim i As Integer, lngMin As Long, lngMax As Long
For i = 1 To 256
lngMin = Cells(65536, i).End(xlUp).Row
If lngMax < lngMin Then
lngMax = lngMin
End If
Next i
lngLetzteZeile = lngMax
End Function

Anzeige
AW: Ansätze habe ich ja...
13.07.2006 10:50:37
fcs
Hallo Thorsten,
habe hier deine Wünsche einmal umgesetzt. Dateinamen musste halt ggf. anpassen. Dabei wird die Zieldatei zu beginn des Makros geöffnet. In einer Schleife können dann nach einander die Datendateien geöffnet werden.

Sub DatenEinlesen()
Dim wbZiel As Workbook, wbQuelle As Workbook, rngDaten As Range, i As Integer
Dim Bereich(1 To 3) As String
Dim Zeile(1 To 3) As Long 'Oberen Index festlegen entsprechend der Anzahl Bereiche die Kopiert werden sollen
Set wbZiel = Workbooks.Open(Filename:="C:\Lokale Daten\Test\Ziel.xls") 'Datei in die die Daten kopiert werden sollen
Bereich(1) = "A2:L2" 'Bereich, der in 1. Tabelle kopiert werden soll
Bereich(2) = "A5:L5" 'Bereich, der in 2. Tabelle kopiert werden soll
Bereich(3) = "A9:L9" 'Bereich, der in 3. Tabelle kopiert werden soll
'Nächste frei Zielzeile in den Tabellen der Zieltabellen ermitteln
For i = 1 To UBound(Zeile)
With wbZiel.Sheets(i)
Zeile(i) = .UsedRange.Row + .UsedRange.Rows.Count
'Alternative Möglichkeit
'Nachfolgend Spalte wählen in der immer Daten stehen!
'Zeile(i) = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
End With
Next i
Do
'Datendatei öffnen
Datei = Application.Dialogs(xlDialogOpen).Show
If Datei = False Then Exit Sub
Application.ScreenUpdating = False
Set wbQuelle = ActiveWorkbook
'Formate und Daten aus den Bereichen in die Zieltabellen kopieren
For i = 1 To UBound(Bereich)
Set rngDaten = wbQuelle.Sheets(1).Range(Bereich(i))
rngDaten.Copy
With wbZiel.Sheets(i)
.Cells(Zeile(i), "A").PasteSpecial Paste:=xlFormats
.Cells(Zeile(i), "A").PasteSpecial Paste:=xlValues
End With
Zeile(i) = Zeile(i) + 1
Next i
Application.CutCopyMode = False
wbQuelle.Close Savechanges = False
Application.ScreenUpdating = True
wbZiel.Save
Loop Until MsgBox("Weitere Datei bearbeiten?", vbQuestion + vbYesNo, "Daten einlesen") = vbNo
wbZiel.Close
End Sub

Gruß
Franz
Anzeige
AW: Ansätze habe ich ja...
13.07.2006 11:20:04
Thorsten
Genial! Genial! Genial! Vielen Dank. Genauso sollte es sein!
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Bereiche in andere Arbeitsmappe kopieren


Schritt-für-Schritt-Anleitung

  1. Öffne die Zielarbeitsmappe: Stelle sicher, dass die Arbeitsmappe, in die du die Daten kopieren möchtest, bereits geöffnet ist.
  2. Wähle den Bereich aus: In deiner Quellarbeitsmappe, markiere die Zellen, die du kopieren möchtest (z.B. A2:L2, A5:L5).
  3. Kopiere die Daten: Nutze die Tastenkombination Strg + C oder gehe auf Start -> Kopieren.
  4. Wechsle zur Zielarbeitsmappe: Klicke in die gewünschte Zielarbeitsmappe.
  5. Füge die Daten ein: Gehe zu dem gewünschten Bereich (z.B. A2:L2) und nutze Strg + V, um die Daten einzufügen.
  6. Wiederhole den Vorgang: Für weitere Bereiche wiederhole die Schritte 2 bis 5.

Um dies zu automatisieren, kannst du ein Excel-Makro verwenden, das die oben beschriebenen Schritte durchläuft.


Häufige Fehler und Lösungen

  • Fehler: Daten werden nicht formatiert übertragen
    Lösung: Stelle sicher, dass du PasteSpecial verwendest, um sowohl Formate als auch Werte zu kopieren. Beispiel:

    rngDaten.Copy
    With wbZiel.Sheets(i)
      .Cells(Zeile(i), "A").PasteSpecial Paste:=xlFormats
      .Cells(Zeile(i), "A").PasteSpecial Paste:=xlValues
    End With
  • Fehler: Daten werden nicht in die richtige Zeile kopiert
    Lösung: Nutze eine Funktion, um die letzte Zeile zu ermitteln, bevor du die neuen Daten einfügst. Beispiel:

    Zeile(i) = .Cells(.Rows.Count, "A").End(xlUp).Row + 1

Alternative Methoden

Eine Alternative zur manuellen Kopie ist die Verwendung von VBA-Skripten. Hier ein einfaches Makro, um Daten aus einer Arbeitsmappe in eine andere zu übertragen:

Sub DatenEinlesen()
    Dim wbZiel As Workbook
    Set wbZiel = Workbooks.Open("C:\Pfad\Zur\Zielarbeitsmappe.xlsx")
    ' Weitere Logik zum Kopieren von Daten
End Sub

Du kannst auch das Application.Dialogs(xlDialogOpen).Show verwenden, um Benutzer zu ermöglichen, die Quelldateien auszuwählen.


Praktische Beispiele

Hier ist ein Beispiel, wie du mit VBA ein ganzes Tabellensheet in eine andere Arbeitsmappe kopieren kannst:

Sub TabellenblattKopieren()
    Dim wbZiel As Workbook
    Dim wbQuelle As Workbook
    Set wbZiel = Workbooks.Open("C:\Pfad\Zur\Zielarbeitsmappe.xlsx")
    Set wbQuelle = Workbooks.Open("C:\Pfad\Zur\Quelldatei.xlsx")

    wbQuelle.Sheets(1).Copy After:=wbZiel.Sheets(wbZiel.Sheets.Count)

    wbZiel.Save
    wbZiel.Close
    wbQuelle.Close
End Sub

Dieses Skript kopiert das erste Tabellenblatt aus der Quelldatei in die Zielarbeitsmappe.


Tipps für Profis

  • Verwende Option Explicit: Dies hilft, Fehler durch falsche Variablenzuweisungen zu vermeiden.
  • Nutze benannte Bereiche: Wenn du mit häufigen Bereichen arbeitest, kann es hilfreich sein, benannte Bereiche in Excel zu verwenden, um den Code lesbarer zu machen.
  • Dokumentiere deinen Code: Füge Kommentare hinzu, um die Funktionsweise deines Makros zu erklären.

FAQ: Häufige Fragen

1. Wie kann ich ein ganzes Excel-Tabellenblatt in eine andere Arbeitsmappe kopieren?
Du kannst das folgende Makro verwenden, um das gesamte Tabellenblatt zu kopieren:

wbQuelle.Sheets(1).Copy After:=wbZiel.Sheets(wbZiel.Sheets.Count)

2. Was mache ich, wenn ich mehrere Dateien gleichzeitig bearbeiten möchte?
Du kannst eine Schleife verwenden, um mehrere Quelldateien zu öffnen und die Daten nacheinander zu kopieren. Verwende dazu Application.Dialogs(xlDialogOpen).Show.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige