VBA - Daten kopieren und in erste freie Zelle eintragen
#1
Hallo Leute,

vorab: Ich kenne mich leider in der VBA-Theorie nicht aus und zeichne nur auf. Manchmal klappt das, manchmal nicht...

Jetzt habe ich ein Problem und Kopfschmerzen:

Ich möchte aus einer Datenquelle A die Daten aus den Zeilem A2 bis L2 (da in der ersten Zeile nur Überschriften stehen) in eine Zieldatei einfügen. Und zwar da immer in die erste freie Zeile (auch da von A bis L). Kann mir jemand helfen?

Momentan sieht das so aus:


 Windows("Datenquelle.XLSX").Activate
    ActiveWorkbook.Close SaveChanges:=False
    Cells.Select
    Selection.Copy
    Windows("Zieldatei.xlsm").Activate
    Sheets("DATA").Select
    Range("A1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Range("A1").Select

Danke vorab!
Top
#2
Hallo, :19:

entweder mit Wertzuweisung (Sub Main()), oder wenn auch Formate benötigt werden mit kopieren (Sub Main_1()):


Code:
Option Explicit
Public Sub Main()
    ThisWorkbook.Sheets("Data").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Resize(, 12).Value = Workbooks("Datenquelle.xlsx").Sheets("Quelle").Range("A2:L2").Value
End Sub
Public Sub Main_1()
    Workbooks("Datenquelle.xlsx").Sheets("Quelle").Range("A2:L2").Copy ThisWorkbook.Sheets("Data").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Resize(, 12)
    Application.CutCopyMode = True
End Sub

Tabellenblatt- und Dateiname musst Du natürlich ggf. anpassen.
Top
#3
Hola,

und warum fragst du hier, wo dir im anderen Forum doch schon geholfen wird?

http://www.vba-forum.de/forum/View.aspx?...Stammdatei

Gruß,
steve1da
Top
#4
Ich verstehe leider wenig bis garnichts von VBA und weiß nicht, was ich wo eintragen soll im Code. Bin leider totaler Anfänger. Daher meine Fragen,

Bekomme einen Indexfehler 9, dass es außerhalb des Bereichs ist.

Ich kapier das einfach nicht und verliere meine Nerven dabei. Das kann ich mir bei all dem anderen Stress nicht erlauben. Trotzdem Danke
Top
#5
Hallo, :19:

der Dateiname und die beiden Tabellenblattnamen müssen stimmen.
Top
#6
Ich habe ja eine Datenquelle. Die heißt meinetwegen "Datenquelle.XLSX". Die hat nur ein Arbeitsblatt "Sheet1"
In der Zieldatei namens "Zieldatei.XLSX", habe ich ein Arbeitsblatt was "Data" heißt. Da soll das hin.

Wo ist der Fehler im Code bei dem Indexfehler?
Top
#7
Hallo, :19:

in meinem Beispiel habe ich das Makro in der Zieldatei. Willst Du das von einer dritten Datei aus machen? Sind die Dateien offen?

In folgendem Beispiel musst Du einfach beide Dateien offen haben und dann auf den jeweiligen Button klicken.
Top
#8
Hallo Danke für das Feedback,

jetzt kopiert er das zwar von der Datenquelle in das Zielblatt, aber nur eine Zeile aus der Datenquelle (A2:L2). Ich möchte aber dass alles kopiert bis zum letzten Eintrag ganz unten.

Dann kommt das nächste Arbeitsblatt, welches dann in die erste freie Zeile von der Zieldatei kopieren soll.
Top
#9
(06.03.2018, 14:01)Handwerker schrieb: jetzt kopiert er das zwar von der Datenquelle in das Zielblatt, aber nur eine Zeile aus der Datenquelle (A2:L2).

Hallo, :19:

genau das wolltest Du doch bzw. hast Du am Anfang geschrieben. Wenn Du alles bis zur letzten Zeile kopieren willst, dann so: :21:

Code:
Public Sub Main_1()
    With Workbooks("Datenquelle.xlsx").Sheets("Quelle")
        .Range("A2:L" & .Cells(.Rows.Count, 1).End(xlUp).Row).Copy ThisWorkbook.Sheets("Data").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
    End With
    Application.CutCopyMode = True
End Sub
Top
#10
Klappt erstmal! Vielen Dank für deine Hilfe!!
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste