Live-Forum - Die aktuellen Beiträge
Datum
Titel
23.04.2024 14:59:21
23.04.2024 14:47:39
23.04.2024 14:23:45
Anzeige
Archiv - Navigation
1652to1656
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

Spalten kopieren und in Datei einfügen

Spalten kopieren und in Datei einfügen
05.11.2018 12:19:10
parza
Liebe Fachleute,
Werner hat mir letzte Woche einen super Code geschrieben, um Spalten zu kopieren und sie dann in eine neue Datei einzufügen. Funktioniert genial (vba unten stehend).
Nun meine Frage: Bisher wird aus einer Datei die Registerkarte "Personal" in die neue Datei xxxx KE_18_19.xls in die Registerkarte "Berechnung" eingefügt.
Ist es möglich, dass gleichzeitig noch eine zweite Registerkarte "BU" ausgelesen wird, und ebenfalls in die Datei xxxx KE_18_19.xls eingefügt wird und zwar in die Registerkarte "BU2.
danke, parza
Option Explicit
Sub KE_erstellen()
Dim intI As Integer, loZeileZiel As Long, loSpalteZiel As Long
Dim wbZiel As Workbook, wsZiel As Worksheet, Spalte As Variant
'festlegen der Zielzeile
loZeileZiel = 3
'festlegen der Zielspalte (Startspalte) A=1, B=2 ...
loSpalteZiel = 4
Spalte = Array(1, 10, 11, 16, 17, 19, 23, 24, 25, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,  _
39, 43, 48)
Application.ScreenUpdating = False
'Datei öffnen und Zielblatt zuweisen
''Set wbZiel = Workbooks.Open("F:\xxxx KE_18_193.xls")
Set wbZiel = Workbooks.Open("Q:\4\41\AllgemeinesSG41\Zusammenarbeit\Kostenersatz\18_19\xxxx  _
KE_18_19.xls")
Set wsZiel = wbZiel.Worksheets("Berechnung")
Range("B3:Y7000").Select
Selection.ClearContents
For intI = 0 To 22
With ThisWorkbook.Worksheets("Personal")
'Bereich kopieren
.Range(.Cells(3, Spalte(intI)), .Cells(.Cells(.Rows.Count, _
Spalte(intI)).End(xlUp).Row, Spalte(intI))).Copy
With wsZiel
'kopierte Daten als Werte einfügen
.Cells(loZeileZiel, loSpalteZiel).PasteSpecial Paste:=xlPasteValues
loSpalteZiel = loSpalteZiel + 1
End With
End With
Next
'Zielblatt speichern und schließen
'wbZiel.Close True
'Kopierspeicher leeren
Application.CutCopyMode = False
'Variablen aufräumen
Set wbZiel = Nothing: Set wsZiel = Nothing
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalten kopieren und in Datei einfügen
05.11.2018 14:17:11
Werner
Hallo,
da kann man aber durchaus auch selber drauf kommen.
Dein Zielblatt ist ja schon offen, du willst ja nur auf ein anderes Blatt zugreifen. Dafür recht es doch einfach das neue Zielblatt mit einer neuen Set Anweisung zu definieren und im With das neue Quellblatt anzugeben. Weiterhin die Variablen für die Zielzeile und die Zielspalte müssen entsprechend neu gefüllt werden.
Ansonsten ist der Code doch genau der gleiche wie beim ersten Fall. Vorausgesetzt es geht auch im zweiten Blatt um die gleichen Spalten. Ansonsten müsste am Anfang halt auch noch das Array mit den Spalten neu befüllt werden.
Sub KE_erstellen()
Dim intI As Integer, loZeileZiel As Long, loSpalteZiel As Long
Dim wbZiel As Workbook, wsZiel As Worksheet, Spalte As Variant
'festlegen der Zielzeile
loZeileZiel = 3
'festlegen der Zielspalte (Startspalte) A=1, B=2 ...
loSpalteZiel = 4
Spalte = Array(1, 10, 11, 16, 17, 19, 23, 24, 25, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, _
39, 43, 48)
Application.ScreenUpdating = False
'Datei öffnen und Zielblatt zuweisen
Set wbZiel = _
Workbooks.Open("Q:\4\41\AllgemeinesSG41\Zusammenarbeit\Kostenersatz\18_19\xxxxKE_18_19.xls ")
Set wsZiel = wbZiel.Worksheets("Berechnung")
'ohne Select, ich nehme an, du willst im Zielblatt leeren
wsZiel.Range("B3:Y7000").ClearContents
For intI = 0 To 22
'Quellblatt
With ThisWorkbook.Worksheets("Personal")
'Bereich kopieren
.Range(.Cells(3, Spalte(intI)), .Cells(.Cells(.Rows.Count, _
Spalte(intI)).End(xlUp).Row, Spalte(intI))).Copy
With wsZiel
'kopierte Daten als Werte einfügen
.Cells(loZeileZiel, loSpalteZiel).PasteSpecial Paste:=xlPasteValues
loSpalteZiel = loSpalteZiel + 1
End With
End With
Next
'festlegen der Zielzeile
loZeileZiel = 3
'festlegen der Zielspalte
loSpalteZiel = 4
Set wsZiel = wbZiel.Worksheets("BU2")
'ohne Select, ich nehme an du willst im Zielblatt leeren
wsZiel.Range("B3:Y7000").ClearContents
For intI = 2 To 22
'anderes Quellblatt
With ThisWorkbook.Worksheets("BU")
'Bereich kopieren
.Range(.Cells(3, Spalte(intI)), .Cells(.Cells(.Rows.Count, _
Spalte(intI)).End(xlUp).Row, Spalte(intI))).Copy
With wsZiel
'kopierte Daten als Werte einfügen
.Cells(loZeileZiel, loSpalteZiel).PasteSpecial Paste:=xlPasteValues
loSpalteZiel = loSpalteZiel + 1
End With
End With
Next
'Zielblatt speichern und schließen
'wbZiel.Close True
'Kopierspeicher leeren
Application.CutCopyMode = False
'Variablen aufräumen
Set wbZiel = Nothing: Set wsZiel = Nothing
End Sub
Gruß Werner
Anzeige
AW: Spalten kopieren und in Datei einfügen
05.11.2018 14:41:14
parza
Werner,
vielen Dank. Du hast mein Problem komplett richtig beschrieben und fast bin auch auf die Lösung gekommen, den Code zu kopieren und unter den ersten zu setzen, Arrays anzupassen etc.. Bei mir hat es aber immer wieder die Zieldatei neu aufgemacht und damit waren zwar die einen Werte drinnen, die ersten aber wieder gelöscht.
Ich hoffe die 3. Registerkarte, die ähnlich ist, bringe ich nun selbst hin.
Danke, parza
Gerne u. Danke für die Rückmeldung. o.w.T.
05.11.2018 14:50:42
Werner

342 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige