Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1220to1224
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

Erweiterung Kopieren

Erweiterung Kopieren
Michel
Hallo zusammen
untenstehender Code funktioniert einwandfrei. Ich möchte dies nun erweitern.
Die so erstellen Zeilen der verschiedenen Tabellen einer Datei, sollten nun jeweils in eine eigene Datei weiter kopiert werden. Auch hier gilt es. Die letzte Zeile sollte nur dann kopiert werden, falls das Datum (1. Wert beider Zeilen in beiden Dokumenten) nicht schon enthalten ist. Dabei sollte die Datei, in die kopiert werden soll, automatisch geöffnet, gespeichert und geschlossen werden.
Grund für die Erweiterung: Es werden weitere Daten miteinbezogen, die im ersten Vorgang noch nicht enthalten sind.
Besten Dank für Eure Hilfe.
Gruss Michel
Sub KopierenNach(rngDatum As Range, rngWert As Range, shZiel As Worksheet)
Dim shQ As Worksheet, shD As Worksheet
Dim zeile As Long
zeile = -1
On Error Resume Next 'Fehler abfangen (wenn Datum nicht existiert)
zeile = WorksheetFunction.Match(rngDatum, shZiel.Columns(1), 0)
On Error GoTo 0
If zeile = -1 Then zeile = shZiel.Cells(shZiel.Rows.Count, 1).End(xlUp).Row + 1
With shZiel
.Cells(zeile, 1) = rngDatum
.Cells(zeile, 2) = rngWert
End With
End Sub

Sub Test()
KopierenNach Worksheets("Tabelle1").Range("A1"), Worksheets("Tabelle1").Range("B1"), Worksheets( _
_
"Tabelle2")
KopierenNach Worksheets("Tabelle1").Range("A2"), Worksheets("Tabelle1").Range("B2"), Worksheets( _
_
"Tabelle3")
End Sub

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Erweiterung Kopieren
15.07.2011 21:19:50
fcs
Hallo Michel,
wenn mehrere Dateien in Aktionen involviert sind, dann muss man sehr ganau darauf achten, dass auf die betroffenen Objekte (Tabellenblätter, Zellen, etc) korrekt und vollständig verwiesen wird.
Damit man unabhängig vom aktiven Dokument auf die Objekte bzw. ihren Inhalt zugreifen kann weist man die involvierten Arbeitsmappen und Tabellenblätter entsprechenden Objektvariablen zu.
Die Sub "KopierenNach" bleibt unverändert. diese hab ich "nur" redaktionell optimiert.
Die Namen der Dateien und Tabellenblätter muss du natürlich anpassen.
Gruß
Franz
Sub KopierenNach(rngDatum As Range, rngWert As Range, shZiel As Worksheet)
'Sucht Datum in Spalte A des Zielblattes und trägt Wert in Spalte B ein
'Neues Datum wird am Ende der Liste angehängt
Dim zeile As Long
zeile = -1
On Error Resume Next 'Fehler abfangen (wenn Datum nicht existiert)
With shZiel
zeile = WorksheetFunction.Match(rngDatum, .Columns(1), 0)
On Error GoTo 0
If zeile = -1 Then zeile = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(zeile, 1) = rngDatum.Value
.Cells(zeile, 2) = rngWert.Value
End With
End Sub
Sub Test()
Dim wbAkt As Workbook, wksZiel As Worksheet, wksQuelle As Worksheet
Dim wbZiel As Workbook, sZieldatei As String
Set wbAkt = ActiveWorkbook
Set wksQuelle = wbAkt.Worksheets("Tabelle1")
Application.ScreenUpdating = False
With wksQuelle
'Daten in 1. Zieldatei übertragen
sZieldatei = "C:\Users\Public\Test\Test_Datei1.xls"
Set wbZiel = Workbooks.Open(Filename:=sZieldatei, addtomru:=False)
Set wksZiel = wbZiel.Worksheets("Tabelle2")
KopierenNach rngDatum:=.Range("A1"), rngWert:=.Range("B1"), shZiel:=wksZiel
wbZiel.Close savechanges:=True
'Daten in 2. Zieldatei übertragen
sZieldatei = "C:\Users\Public\Test\Test_Datei2.xls"
Set wbZiel = Workbooks.Open(Filename:=sZieldatei, addtomru:=False)
Set wksZiel = wbZiel.Worksheets("Tabelle3")
KopierenNach rngDatum:=.Range("A2"), rngWert:=.Range("B2"), shZiel:=wksZiel
wbZiel.Close savechanges:=True
End With
Application.ScreenUpdating = True
'Alle Objektvariablen zurücksetzen
Set wbAkt = Nothing: Set wbZiel = Nothing
Set wksZiel = Nothing: Set wksQuelle = Nothing
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige