Bereich in ein anderes Tabellenblatt kopieren

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
InputBox MsgBox
Bild

Betrifft: Bereich in ein anderes Tabellenblatt kopieren
von: Gerald
Geschrieben am: 23.10.2015 21:42:55

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!!

Bild

Betrifft: AW: Bereich in ein anderes Tabellenblatt kopieren
von: fcs
Geschrieben am: 25.10.2015 12:47:14
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

Bild

Betrifft: AW: Bereich in ein anderes Tabellenblatt kopieren
von: Gerald
Geschrieben am: 25.10.2015 15:32:50
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

Bild

Betrifft: AW: Bereich in ein anderes Tabellenblatt kopieren
von: fcs
Geschrieben am: 25.10.2015 21:35:47
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


Bild

Betrifft: AW: Bereich in ein anderes Tabellenblatt kopieren
von: Gerald
Geschrieben am: 26.10.2015 15:48:50
Hallo Franz,
bin begeistert!! Funktioniert einwandfrei.
Vielen, vielen Dank!
Gruß,
Gerald

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Bereich in ein anderes Tabellenblatt kopieren"