Clever-Excel-Forum

Normale Version: Erstellung eines Makros für das Kopieren und Einfügen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo  Blush ,


ich bin gerade dabei mehrere Tabellen aus verschiedenen Excel-Dateien zu kopieren und diese in eine Excel-Datei einzufügen.

Einfaches Beispiel:
Nehmen wir an das in der Excel-Datei1 in den Zellbereich A1 bis Zelle A6 die Werte von 1 bis 6 enthalten sind sowie die Werte 1 bis 6 in den Zellbereich von B1 bis B6.
Ich verwende die Kombination "STRG+SHIFT+Pfeil nach unten" um den ganzen Bereich zu markieren. In diesem Falle A1 bis A6.

Danach gehe ich zu Excel-Datei2 -> klicke auf Zelle A1 -> Einfügeoptionen (Werte (w)).

Soweit so gut, nur ist es recht mühsam bei mehreren hundert Spalten.
Daher kam ich auf die Idee ein Makro zu erstellen, um den Aufwand etwas zu verringern.

Erstellung der Makros:
In Excel-Datei1 habe ich einen Makro1 (STRG+D) erstellt, sodass diese den Zellbereich (A1:A6) kopiert und in Excel-Datei2 einen Makro2 (STRG+F) erstellt, der mir das Einfügen als "Werte" beschleunigt.

Problem:
Nachdem die Werte erfolgreich eingefügt worden sind, möchte ich nun den Vorgang wiederholen. Nur diesmal sollen die Werte B1 bis B6 in Excel-Datei1 kopiert werden. Also drücke ich STRG+D. Jedoch wird der Zellbereich A1 bis A6 kopiert und nicht B1 bis B6.

Frage:
Wie kann ich den Makro1 so umstellen, sodass es den Zellbereich B1 bis B6 kopiert (sowie andere beliebige Zellbereiche)?.
Hallo,

woher sollen wir wissen, was du wo umstellen musst, wenn wir deine Makros nicht kennen?
Hallo,
wo ist der Unterschied zu Strg C und Strg V? Nur weil ein Bereich eingegeben wurde? Also dann kann ich auch noch kurz den Bereich markieren, damit ich kopieren kann. Du musst etwas direkter werden. Wir helfen Dir gerne ...

Lg
Marcus
Hallo

mein Tipp:    kopiere dir beide Dateien in einen Test Ordner, wo du das untere Makro testen und selbst entwickeln kannst.  
Niemals beim Entwickeln im Original arbeiten, du kannst zu leicht Original Daten überschreiben!!

Das untere Makro zeigt wie es im Prinzip geht, es muss aber noch angepasst werden.  In Const Wb2 gehört der Name der Datei2 hinein, mit der Endung: "xls?"  Ausserdem müssen noch die Original Namen der Quell- und Zeil Tabellen angegeben werden. Bei mir steht nur Quelle und Ziel als Text damit du weist was wohin gehört!

Zum kopieren ab Spalte A kann man For Next verwenden, muss entweder die Anzahl der Spalten als Zahl angeben, oder den Index der letzten Spalte, der in der Variablen lSpa steht. Dann sollte das Makro 1:1 von der Quell Tabelle in die richtigen Spalten der Ziel Tabelle kopieren. 

Wenn es nicht auf Anhieb klappt basteln wir solange am Code, bis er einwandfrei funktioniert.  Bitte zuerst NUR mit Kopie Dateien!!

mfg  Gast 123

Code:
Option Explicit      '+.1.2019   Gast 123  für Clever Forum

Const Wb2 = "Dein Workbook 2"    'Name der Ziel Mappe angeben
Const CopyBereich = "A1:A6"      'Bereich der kopiert wird


'Beispiel Makro zum Start ins VBA Vergnügen
'wir basteln uns selbst einen Kopier Code!!


Sub AlleSpalten_kopieren()
Dim ZTab As Worksheet, lSpa As Integer
'Zieltabelle als Objekt angeben, mit Mappen Name
Set ZTab = Workbooks(Wb2).Worksheet("Ziel-Tabelle")

With ThisWorkbook.Worksheets("Quell-Tabelle")
    'letzte Spalte in Quell-Tabelle ermitteln
    lSpa = Cells(1, Column.Count).End(xlToLeft).Column
    Spalten = 100   'oder Anzahl Spalten als Zahl angeben
     
    'Schleife von 1. bis Spalten  (oder letzter Spalte)
    For j = 1 To Spalten  '** oder lSpa !!
      'Bereich A2:A5 wird über Offset verschoben!!
      .Range(CopyBereich).Offset(0, j - 1).Copy
      ZTab.Range("A1").Offset(0, j - 1).PasteSpecial xlPasteAll  'oder xlPasteValues
    Next j

    Application.CutCopyMode = False
End With
End Sub