Makro zum Verschieben oder Kopieren von Daten zwischen Excel-Arbeitsmappen
In diesem Artikel erfahren Sie, wie Sie mithilfe von VBA Daten in Microsoft Excel kopieren oder zwischen Arbeitsblättern übertragen . In diesem speziellen Beispiel lernen Sie auch, wie Sie Daten mithilfe einer Anfügeabfrage kombinieren. Mit dieser Kombination von Aufgaben können Sie Daten in vorhandenen Arbeitsblättern kombinieren, um die Analyse zu vereinfachen.
Makro zum Verschieben oder Kopieren von Daten in Excel
Angenommen, Sie müssen Daten aus einer Arbeitsmappe kopieren und dann den Inhalt in eine andere Arbeitsmappe ändern. In diesem Beispiel hat Arbeitsmappe eins (die Quellarbeitsmappe) 1 2 3 4 5 und Arbeitsmappe zwei 6 7 8 9 0 .Nach dem Ausführen des Makros sollte Arbeitsmappe zwei 6 7 8 9 0 1 2 3 4 5 haben . Die Formate beider Arbeitsmappen sind identisch.
Hier ist ein Makro, mit dem Sie Ihre Daten übertragen und anhängen können. (Stellen Sie sicher, dass Sie den HINWEIS im Code gelesen haben):
Sub CopyData ()Dim sBook_t As String
Dim sBook_s As String
Dim sSheet_t As String
Dim sSheet_s As String
Dim lMaxRows_t As Long
Dim lMaxRows_s As Long
Dim sMaxCol_s As String
Dim sRange_t As String
Dim sRange_s As String
sBook_t = "Zieldaten WB - Daten nach WB.xls kopieren"
sBook_s = "Quelldaten WB - Daten nach WB.xls kopieren"
sSheet_t = "Ziel-WB"
sSheet_s = "Quelle"
lMaxRows_t = Arbeitsmappen (sBook_t) .Sheets (sSheet_t) .Cells (Rows.Count, "A"). End (xlUp) .Row
lMaxRows_s = Arbeitsmappen (sBook_s) .Sheets (sSheet_s) .Cells (Rows.Count, "A"). End (xlUp) .Row
sMaxCol_s = Arbeitsmappen (sBook_s) .Sheets (sSheet_s) .Cells (1, Columns.Count) .End (xlToLeft) .Address
sMaxCol_s = Mid (sMaxCol_s, 2, InStr (2, sMaxCol_s, "$") - 2)
If (lMaxRows_t = 1) Then
sRange_t = "A1:" & sMaxCol_s & lMaxRows_s
sRange_s = "A1:" & sMaxCol_s & lMaxRows_s
Arbeitsmappen (sBook_t) .Sheets (sSheet_t) .Range (sRange_t) = Arbeitsmappen (sBook_s) .Sheets (sSheet_s) .Range (sRange_s) .Value
Sonst
sRange_t = "A" & (lMaxRows_t + 1) & ":" & sMaxCol_s & (lMaxRows_t + lMaxRows_s - 1)
sRange_s = "A2:" & sMaxCol_s & lMaxRows_s
Arbeitsmappen (sBook_t) .Sheets (sSheet_t) .Range (sRange_t) = Arbeitsmappen (sBook_s) .Sheets (sSheet_s) .Range (sRange_s) .Value
' ###################### HINWEIS #################
'Folgende Zeilen sollen von der Seriennummer verwendet werden soll auch fixiert werden, anstatt kopiert zu werden
'Wenn dies nicht erforderlich ist, löschen Sie die folgende Zeile
Arbeitsmappen (sBook_t) .Sheets (sSheet_t) .Range ("A" & lMaxRows_t) .AutoFill Destination: = Arbeitsmappen (sBook_t) .Sheets (sSheet_t) .Range ("A" & lMaxRows_t & ": A" & lMaxRows_t + lMaxRows_t - 1)), Typ: = xlFillSeries
End If
End Sub