AW: Update funktion
04.11.2009 14:25:16
Chris
Servus,
probier mal an einer Beispieldatei, ob das so hibhaut, wie das gerne möchtest:
Sub ABU()
Dim Pfad As String, WksZiel As Worksheet, WksQuelle As Worksheet
Dim Fso, DateiName, i
Dim rSuche As Range, rFinde As Range
Set Fso = CreateObject("Scripting.FileSystemObject")
Set WksZiel = ThisWorkbook.ActiveSheet
Pfad = "C:\....\2009\" ' Hier deinen Pfad vorgeben
DateiName = Pfad & "\" & ActiveSheet.Name & ".xls"
Application.ScreenUpdating = False
If Fso.FileExists(DateiName) Then
Workbooks.Open DateiName
Else
MsgBox "nichts da!"
Application.ScreenUpdating = True
Exit Sub
End If
Set WksQuelle = ActiveWorkbook.ActiveSheet 'Suche in Planungsdatei nach den einzelnen _
Werten aus Spalte F von der geöffneten Datei
With WksZiel
Set rFinde = .Range("F:F")
For i = 2 To WksQuelle.Cells(65536, 6).End(xlUp).Row
Set rSuche = rFinde.Find(what:=WksQuelle.Cells(i, 6), LookAt:=xlWhole, LookIn:= _
xlValues)
If Not rSuche Is Nothing Then ' wenn da , werte ersetzen
.Range("X" & rSuche.Row) = WksQuelle.Range("X" & i)
.Range("Y" & rSuche.Row) = WksQuelle.Range("Y" & i)
.Range("Z" & rSuche.Row) = WksQuelle.Range("Z" & i)
Else
WksQuelle.Rows(i).Copy .Cells(.Cells(65536, 6).End(xlUp).Row, 1) ' sonst zeile _
kopieren
End If
Next i
End With
With WksZiel
Set rFinde = WksQuelle.Range("F:F") ' Suche in Update in Spalte F, ob alle Einträge _
aus Planung vorhanden
For i = .Cells(65536, 6).End(xlUp).Row To 2 Step -1
Set rSuche = rFinde.Find(what:=.Cells(i, 6), LookAt:=xlWhole, LookIn:=xlValues)
If rSuche Is Nothing Then ' wenn nicht lösche in Planung die entsprechende Zeile
.Rows(i).EntireRow.Delete
End If
Next i
End With
Set rFinde = Nothing
Set rSuche = Nothing
Application.ScreenUpdating = True
End Sub
ist mangels Beispieldateien natürlich ungetestet, deswegen auch nicht an der Originaldatei zu testen.
Gruß
Chris