Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1420to1424
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Daten in andere Liste kopieren - VBA

Daten in andere Liste kopieren - VBA
13.04.2015 11:18:17
Christian
Hallo zusammen,
ich möchte gerne folgende aus der Tabelle Artikelmarkmale.xls Reiter Artikelmerkmale den Bereich A2 bis I(letzte gefüllte Zelle) in die Tabelle aaa_Masterdatei.xlsm Reiter Artikelmerkmale kopieren.
Die Quelledatei liegt: P:\Auftragserstellung
Die Zieldatei liegt: P:\Röst und Schüttauftrag
Das habe ich so gelöst:

Sub A1InachMasterdatei()
' A1InachMasterdatei Makro
ActiveWindow.LargeScroll ToRight:=-3
Range("A1:I1023").Select
Selection.Copy
Workbooks.Open Filename:="P:\Röst und Schüttauftrag\aaa_Masterdatei.xlsm"
ActiveSheet.Paste
Columns("A:A").EntireColumn.AutoFit
Application.CutCopyMode = False
ActiveWorkbook.Save
ActiveWindow.Close
End Sub


Ich habe zwei Anliegen:
1. Überprüfung meines Codes und evtl. Verbesserung
2. I1023 soll durch Iletztegefülltezelle geändert werden.
Vielen Dank

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten in andere Liste kopieren - VBA
13.04.2015 11:48:13
Michael
Hallo Christian!
Sollte so klappen:
Sub AbisIendeNachMasterdatei()
Dim Quelle As Workbook
Dim Ziel As Workbook
Dim LetzteI As Long
Set Quelle = ThisWorkbook
Workbooks.Open Filename:="P:\Röst und Schüttauftrag\aaa_Masterdatei.xlsm"
Set Ziel = ActiveWorkbook
LetzteI = Quelle.Worksheets("Artikelmerkmale").Cells(1048576, 9).End(xlUp).Row
Quelle.Worksheets("Artikelmermale").Range("A2:I" & LetzteI).Copy
Ziel.Worksheets("Artikelmerkmale").Range("A1").Paste
Application.CutCopyMode = False
Ziel.Save
Ziel.Close
Quelle.Activate
End Sub
Lg
Michael

Anzeige
AW: Daten in andere Liste kopieren - VBA
13.04.2015 12:03:04
Christian
Hallo Michael,
hier kommt Laufzeitfehler
LetzteI = Quelle.Worksheets("Artikelmerkmale").Cells(1048576, 9).End(xlUp).Row
Kannst du nochmal gucken.
Danke

AW: Daten in andere Liste kopieren - VBA
13.04.2015 12:26:40
Michael
Hallo Christian!
Ich war etwas ungenau. Mein Code geht davon aus, dass Du ihn aus der Quell-Mappe heraus aufrufst, d.h. dass Deine Quellmappe schon geöffnet ist. Bei mir bezieht sich "Quelle" nämlich auf die Mappe aus der das Makro aufgerufen wird.
Sollte das so sein, dann kann der Fehler nur daran liegen, dass Du kein Tabellenblatt hast, das exakt "Artikelmerkmale" heißt.
Gib mir Bescheid - dann kann ich evtl. noch anpassen!
Michael

Anzeige
AW: Daten in andere Liste kopieren - VBA
13.04.2015 12:32:59
Christian
Hallo Michael,
das ja merkwürdig.
Ich fasse zusammen:
Ich starte das Makro aus der Quelle Tabelle Artikelmarkmale und da aus dem Arbeitsblatt Artikelmarkmale. Die Datei liegt: P:\Auftragserstellung
Die Ziel Datei aaa_Masterdatei.xlsm hat auch ein Tabellenblatt namens Artikelmarkmale. die Datei liegt: P:\Röst und Schüttauftrag
Verstehe nicht warum der Fehler kommt. Es ist genau, wie du es gedacht hast.
Danke

AW: Daten in andere Liste kopieren - VBA
13.04.2015 13:01:45
Michael
Hallo Christian!
Wo die Quellatei gespeichert ist, ist in diesem Fall gar nicht relevant. Weil die Datei ja sowieso schon offen ist - da frag ich gar nicht lange nach, wo sie gespeicher ist ;-).
Einen Schreibfehler hab ich noch entdeckt, daher hier nochmal mein Code mit geringfügiger Änderung:
Sub AbisIendeNachMasterdatei()
Dim Quelle As Workbook
Dim Ziel As Workbook
Dim LetzteI As Long
Set Quelle = ThisWorkbook
Workbooks.Open Filename:="P:\Röst und Schüttauftrag\aaa_Masterdatei.xlsm"
Set Ziel = ActiveWorkbook
LetzteI = Quelle.Worksheets("Artikelmerkmale").Cells(1048576, 9).End(xlUp).Row
Quelle.Worksheets("Artikelmerkmale").Range("A2:I" & LetzteI).Copy
Ziel.Worksheets("Artikelmerkmale").Activate
ActiveSheet.Paste
Application.CutCopyMode = False
Ziel.Save
Ziel.Close
Quelle.Activate
End Sub
Bei mir läuft's. Sonst fällt mir nicht mehr viel ein, woran's haken könnte.
LG
Michael

Anzeige
AW: Daten in andere Liste kopieren - VBA
13.04.2015 13:20:50
Christian
Hallo Michael,
es klappt nicht.
Meine Zieldatei hat 3 Tabellen (Tabelle3, Tabelle2 und Artikelmarkmale) Es ist immer die Tabelle3 geöffnet, wenn die Tabelle geöffnet wird. Kann es sein, dass es daran liegt. Die Tabellen 3 und 2 haben einen Blattschutz.
Danke

AW: Daten in andere Liste kopieren - VBA
13.04.2015 13:37:45
Michael
Hallo Christian!
es klappt nicht
Was klappt nicht? Kommt noch eine Fehlermeldung, oder werden die Daten nicht/nicht richtig kopiert, bricht die Routine ab...?
Meine Zieldatei hat 3 Tabellen (Tabelle3, Tabelle2 und Artikelmarkmale) Es ist immer die Tabelle3 geöffnet, wenn die Tabelle geöffnet wird. Kann es sein, dass es daran liegt. Die Tabellen 3 und 2 haben einen Blattschutz.
Nein, wenn im Blatt "Artikelmerkmale" kein Blattschutz gesetzt ist, dann passt das - wenn die Mappe geschützt ist, ist das problematisch.
Habe meinen Code nochmals getestet... funktioniert. Gib also nochmal Bescheid, denn ich weiß jetzt nicht mehr, was nicht klappt.
Lg
Michael

Anzeige
AW: Daten in andere Liste kopieren - VBA
13.04.2015 14:56:56
EtoPHG
Hallo zusammen,
Ihr solltet ein bisschen an Eurer Kommunikation arbeiten:
Beitrag 1: Tabelle aaa_Masterdatei.xlsm Reiter Artikelmerkmale
müsste wohl heissen: Arbeitsmappe "aaa_Masterdatei.xlsm" Tabellenblatt "Artikelmerkmale"
Beitrag 2: Quelle.Worksheets("Artikelmermale")....
müsste wohl heissen: Quelle.Worksheets("Artikelmerkmale")....
Beitrag 5: Tabelle Artikelmarkmale und da aus dem Arbeitsblatt Artikelmarkmale
müsste wohl heissen: Arbeitsmappe "?" und das aus dem Tabellenblatt "Artikelmerkmale"
Beitrag 6: Zieldatei hat 3 Tabellen (Tabelle3, Tabelle2 und Artikelmarkmale)
müsste wohl heissen: Artikelmerkmale
@Christian: Stufe bitte deine Levels zurück!
Vielleicht hilft der Code. Du solltest die 2 Konstanten auf Richtigkeit gegenprüfen.
Als Quelle wird das aktive Blatt der Mappe angewendet, in welcher der Code steht.
Sub A1InachMasterdatei()
Const cZielMappe As String = "P:\Röst und Schüttauftrag\aaa_Masterdatei.xlsm"
Const cZielBlatt As String = "Artikelmerkmale"
Dim wsQ As Worksheet
Set wsQ = ThisWorkbook.ActiveSheet
Application.ScreenUpdating = False
With Workbooks.Open(cZielMappe)
wsQ.Range(wsQ.Cells(1, 1), wsQ.Cells(wsQ.Rows.Count, 1).End(xlUp).Offset(, 8)).Copy _
Destination:=.Worksheets(cZielBlatt).Cells(1, 1)
.Worksheets(cZielBlatt).Columns(1).AutoFit
.Close Savechanges:=True
End With
Application.ScreenUpdating = True
End Sub

Gruess Hansueli

Anzeige
AW: Daten in andere Liste kopieren - VBA
13.04.2015 15:11:23
Michael
Hallo Hansueli!
So elegant kann ich's noch nicht. Aber dennoch funktioniert meine Variante.
Ich hatte ja angemerkt Einen Schreibfehler hab ich noch entdeckt... Das Kommunikationsproblem seh' ich also hier nicht ganz auf meiner Seite.
Sorry, das wollt ich nur gesagt haben.
Schönen Tag allen!
Michael

AW: Daten in andere Liste kopieren - VBA
13.04.2015 15:20:22
Christian
Hallo Hansueli und Michael,
vielen Dank für eure Hilfe.
Ich habe es jetzt hinbekommen.
Danke

AW: Daten in andere Liste kopieren - VBA
16.04.2015 13:08:23
Christian
Hallo Hansueli,
ich habe deinen Code erfolgreich eingebaut.
Leider ist mir jetzt aufgefallen, dass ich noch weitere Spalten benötige.
Jetzt ist aber das, dass ich vor dem bzw. während dem Kopieren immer zwei Quellspalten zusammen fassen muss.
ZielSp QuellSp
J AW + AX
K AY + AZ
L BA + BB
M BC + BD
N BE + BF
O BG + BH
P BI + BJ
Q BK + BL
(das + soll keine Formel sein. Es zeigt hier nur, dass die beiden zusammen gehören)
Zwischen den Werten soll nur ein Leerzeichen sein.
Danke

Anzeige
Erweiterung
17.04.2015 18:05:52
Michael
Hallo zusammen,
@Hansueli: ich muß mich Michael (migre)s Meinung anschließen: tres elegant!
(ich warte auf den Tag, an dem ich beim ersten Entwurf einer Kopieraktion nicht "1004" sehe)
Tja, in Deiner (offenen) Quelltabelle kannst Du ja hantieren, wie Du willst, also würde ich Hilfsspalten anlegen und direkt in Excel verformeln, etwa so:

*CJ*           *CK*          usw.
=AW1&" "&AX1   =AY1&" "&AZ1  usw.
Die kannst Du dann in einem Rutsch kopieren, analog wie oben, nur halt mit paste special.
D.h., Du fügst nach der Zeile "Destination" diese beiden Zeilen ein:

wsQ.Range(wsQ.Cells(1, 88), wsQ.Cells(wsQ.Rows.Count, 88).End(xlUp).Offset(, 8)).Copy
.Worksheets(cZielBlatt).Cells(1, 10).PasteSpecial xlPasteValues
CJ ist die Spalte 88, wenn Du es woanders hast, mußte halt die beiden 88er entsprechend ändern.
Schöne Grüße,
Michael (der andere)

Anzeige
AW: Erweiterung
21.04.2015 08:00:47
Christian
Hallo Michael,
ich habe den Code auf Spalte 48 angepasst.
Es funktioniert super.
Vielen Dank.

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige