HERBERS Excel-Forum - das Archiv
Bereich in ein anderes Tabellenblatt kopieren
Gerald

Hallo zusammen,
ich möchte aus einem exportierten Excel-File 'Mappe1/Tabelle1' einen Bereich in eine andere Arbeitsmappe kopieren.
Bereich: Spaltenanzahl ist immer gleich A2-G2, Zeilenanzahl variiert.
In der Zieltabelle 'Mappe2/"Data_HW"' stehen schon Werte. Außerdem ist die letzte befüllte Zeile gelb markiert.
Nun soll der zu kopierende Bereich, in die Tabelle "Data_HW" vor! der gelben Zeile eingefügt werden, und zwar von Spalte B bis H.
In Spalte A werden die Zeilen durchnumneriert.
Wäre super, wenn mir jemand dazu helfen könnte!!

AW: Bereich in ein anderes Tabellenblatt kopieren
fcs

Hallo Gerald,
bevor man da etwas als Makro programmiert sind noch ein paar ragen offen:
1. Sind beide Arbeitsmappen geöffnet?
2. Wo kann das Makro gespeichert werden?
Eine der beiden Mappen? vermutlich Mappe2
oder deine Persönliche Makro-Arbeitsmappe?
3. Was passiert in deiner "gelben" Zeile?
Ist dort nur Text oder sind evtl. auch Formeln mit SUMME oder ähnlich in den Zellen?
4. Gibt es in den relevanten Zellbreichen A:G in Mappe1, Gelbe Zeile in Mappe2 eine Spalte in der jede Zeile ausgefüllt ist? Wichtig zur Ermittlung der letzten Zeile mit Daten.
Gruß
Franz

AW: Bereich in ein anderes Tabellenblatt kopieren
Gerald

Hallo Franz,
danke für die Rückmeldung!
Also, beide Arbeitsmappen sind geöffnet. Das Makro sollte in die persönliche Mappe gespeichert werden.
Die gelbe Zeile in Mappe 2 ist verbunden (A:H), und es steht ein Text drin.
Mappe1 hat keine gelbe Zeile, und die Zeilen in den Spalten A:G sind komplett gefüllt. Das einzige in Mappe 1 ist, das die Zeilenanzahl variiert.
In der Mappe 2 sind auch jeweils die Zellen komplett gefüllt.
Ich hoffe die Infos reichen!
Gruß,
Gerald

AW: Bereich in ein anderes Tabellenblatt kopieren
fcs

Hallo Gerald,
hier ein entsprechendes Makro.
Das Blatt in dem die Daten eingefügt werden sollen ("Data_HW") muss das aktive Blatt sein, wenn das Makro gestartet wird.
Man könnte es aber auch anders herum aufziehen und mit dem Blatt starten, in dem die zu kopierenden Daten stehen.
Gruß
Franz
Sub Copy_Daten_nach_Data_HW()
Dim wksZiel As Worksheet
Dim wkbQuelle As Workbook
Dim arrWkb() As Workbook, intWkb As Integer, intAuswahl As Integer
Dim Zeile_Z As Long, rngCopy As Range
Dim MsgPrompt As String, MsgTitle As String
Set wksZiel = ActiveSheet
MsgTitle = "Makro: Copy_Daten_nach_Data_HW"
If wksZiel.Name <> "Data_HW" Then
MsgBox "Das Blatt ""Data_HW"" muss beim Start des Makros das aktive Blatt sein!", _
vbInformation + vbOKOnly, MsgTitle
Else
'geöffnete Arbeitsmappen suchen für Auswahl
For Each wkbQuelle In Application.Workbooks
If Application.Windows(wkbQuelle.Name).Visible = False Then
ElseIf wkbQuelle.Name = wksZiel.Parent.Name Then
Else
intWkb = intWkb + 1
ReDim Preserve arrWkb(1 To intWkb)
MsgPrompt = vbLf & MsgPrompt & intWkb & " - " & wkbQuelle.Name
Set arrWkb(intWkb) = wkbQuelle
End If
Next
'Inputbox für Auswahl anzeigen
intAuswahl = Application.InputBox( _
"Aus welcher Mappe sollen die Daten eingelesen werden?" & MsgPrompt, _
MsgTitle, 1, Type:=1)
Select Case intAuswahl
Case 0 'Abbruch
Case 1 To intWkb
'zu kopierenden Bereich setzen
Set wkbQuelle = arrWkb(intWkb)
With wkbQuelle.Worksheets(1)
Set rngCopy = .Range(.Cells(2, 1), .Cells(.Rows.Count, 7).End(xlUp))
End With
If rngCopy.Row > 1 Then
With wksZiel
'gelbe Zeile
Zeile_Z = .Cells(.Rows.Count, 1).End(xlUp).Row
'Leerzeilen einfügen
.Rows(Zeile_Z).Resize(rngCopy.Rows.Count).Insert
'Markieren bereich kopieren/einfügen
rngCopy.Copy Destination:=.Cells(Zeile_Z, 2)
'in Spalte A die fortlaufende Nummer fortführen
With .Cells(Zeile_Z, 1).Resize(rngCopy.Rows.Count, 1)
.FormulaR1C1 = "=IF(ISTEXT(R[-1]C1),1,R[-1]C1+1)"
.Value = .Value
End With
End With
Else
MsgBox "Keine Daten zum kopieren gefunden", vbOKOnly, MsgTitle
End If
Set rngCopy = Nothing
Set wkbQuelle = Nothing
Case Else
MsgBox "Ungültige Auswahl", vbOKOnly, MsgTitle
End Select
End If
End Sub

AW: Bereich in ein anderes Tabellenblatt kopieren
Gerald

Hallo Franz,
bin begeistert!! Funktioniert einwandfrei.
Vielen, vielen Dank!
Gruß,
Gerald

Bereich in ein anderes Tabellenblatt kopieren
Gerald

Hallo zusammen,
ich möchte aus einem exportierten Excel-File 'Mappe1/Tabelle1' einen Bereich in eine andere Arbeitsmappe kopieren.
Bereich: Spaltenanzahl ist immer gleich A2-G2, Zeilenanzahl variiert.
In der Zieltabelle 'Mappe2/"Data_HW"' stehen schon Werte. Außerdem ist die letzte befüllte Zeile gelb markiert.
Nun soll der zu kopierende Bereich, in die Tabelle "Data_HW" vor! der gelben Zeile eingefügt werden, und zwar von Spalte B bis H.
In Spalte A werden die Zeilen durchnumneriert.
Wäre super, wenn mir jemand dazu helfen könnte!!

AW: Bereich in ein anderes Tabellenblatt kopieren
fcs

Hallo Gerald,
bevor man da etwas als Makro programmiert sind noch ein paar ragen offen:
1. Sind beide Arbeitsmappen geöffnet?
2. Wo kann das Makro gespeichert werden?
Eine der beiden Mappen? vermutlich Mappe2
oder deine Persönliche Makro-Arbeitsmappe?
3. Was passiert in deiner "gelben" Zeile?
Ist dort nur Text oder sind evtl. auch Formeln mit SUMME oder ähnlich in den Zellen?
4. Gibt es in den relevanten Zellbreichen A:G in Mappe1, Gelbe Zeile in Mappe2 eine Spalte in der jede Zeile ausgefüllt ist? Wichtig zur Ermittlung der letzten Zeile mit Daten.
Gruß
Franz

AW: Bereich in ein anderes Tabellenblatt kopieren
Gerald

Hallo Franz,
danke für die Rückmeldung!
Also, beide Arbeitsmappen sind geöffnet. Das Makro sollte in die persönliche Mappe gespeichert werden.
Die gelbe Zeile in Mappe 2 ist verbunden (A:H), und es steht ein Text drin.
Mappe1 hat keine gelbe Zeile, und die Zeilen in den Spalten A:G sind komplett gefüllt. Das einzige in Mappe 1 ist, das die Zeilenanzahl variiert.
In der Mappe 2 sind auch jeweils die Zellen komplett gefüllt.
Ich hoffe die Infos reichen!
Gruß,
Gerald

AW: Bereich in ein anderes Tabellenblatt kopieren
fcs

Hallo Gerald,
hier ein entsprechendes Makro.
Das Blatt in dem die Daten eingefügt werden sollen ("Data_HW") muss das aktive Blatt sein, wenn das Makro gestartet wird.
Man könnte es aber auch anders herum aufziehen und mit dem Blatt starten, in dem die zu kopierenden Daten stehen.
Gruß
Franz
Sub Copy_Daten_nach_Data_HW()
Dim wksZiel As Worksheet
Dim wkbQuelle As Workbook
Dim arrWkb() As Workbook, intWkb As Integer, intAuswahl As Integer
Dim Zeile_Z As Long, rngCopy As Range
Dim MsgPrompt As String, MsgTitle As String
Set wksZiel = ActiveSheet
MsgTitle = "Makro: Copy_Daten_nach_Data_HW"
If wksZiel.Name <> "Data_HW" Then
MsgBox "Das Blatt ""Data_HW"" muss beim Start des Makros das aktive Blatt sein!", _
vbInformation + vbOKOnly, MsgTitle
Else
'geöffnete Arbeitsmappen suchen für Auswahl
For Each wkbQuelle In Application.Workbooks
If Application.Windows(wkbQuelle.Name).Visible = False Then
ElseIf wkbQuelle.Name = wksZiel.Parent.Name Then
Else
intWkb = intWkb + 1
ReDim Preserve arrWkb(1 To intWkb)
MsgPrompt = vbLf & MsgPrompt & intWkb & " - " & wkbQuelle.Name
Set arrWkb(intWkb) = wkbQuelle
End If
Next
'Inputbox für Auswahl anzeigen
intAuswahl = Application.InputBox( _
"Aus welcher Mappe sollen die Daten eingelesen werden?" & MsgPrompt, _
MsgTitle, 1, Type:=1)
Select Case intAuswahl
Case 0 'Abbruch
Case 1 To intWkb
'zu kopierenden Bereich setzen
Set wkbQuelle = arrWkb(intWkb)
With wkbQuelle.Worksheets(1)
Set rngCopy = .Range(.Cells(2, 1), .Cells(.Rows.Count, 7).End(xlUp))
End With
If rngCopy.Row > 1 Then
With wksZiel
'gelbe Zeile
Zeile_Z = .Cells(.Rows.Count, 1).End(xlUp).Row
'Leerzeilen einfügen
.Rows(Zeile_Z).Resize(rngCopy.Rows.Count).Insert
'Markieren bereich kopieren/einfügen
rngCopy.Copy Destination:=.Cells(Zeile_Z, 2)
'in Spalte A die fortlaufende Nummer fortführen
With .Cells(Zeile_Z, 1).Resize(rngCopy.Rows.Count, 1)
.FormulaR1C1 = "=IF(ISTEXT(R[-1]C1),1,R[-1]C1+1)"
.Value = .Value
End With
End With
Else
MsgBox "Keine Daten zum kopieren gefunden", vbOKOnly, MsgTitle
End If
Set rngCopy = Nothing
Set wkbQuelle = Nothing
Case Else
MsgBox "Ungültige Auswahl", vbOKOnly, MsgTitle
End Select
End If
End Sub

AW: Bereich in ein anderes Tabellenblatt kopieren
Gerald

Hallo Franz,
bin begeistert!! Funktioniert einwandfrei.
Vielen, vielen Dank!
Gruß,
Gerald

Dialog-Beispiele
Bewerten Sie hier bitte das Excel-Portal