mit folgendem Code importiere ich mir zwischen zwei Mappen Daten:
Private Sub Import()
Dim oTargetSheet As Object
Dim oSourceSheet As Object
Dim oSourceFile As Object
Dim z As Long
Dim zMax As Long
Dim zInsert As Long
Application.ScreenUpdating = False
Set oTargetSheet = ThisWorkbook.Sheets(1)
Set oSourceFile = Workbooks.Open(sIMPORTFILE, False, True)
Set oSourceSheet = oSourceFile.Sheets("Import")
zMax = oSourceSheet.UsedRange.Rows.Count + oSourceSheet.UsedRange.Row - 1
zInsert = lFIRSTINSERTROW
For z = lSTARTROW To zMax
'Bedingungen abfragen
If IsNumeric(oSourceSheet.Cells(z, lIFCOL1).Value) = True Then
If CDbl(oSourceSheet.Cells(z, lIFCOL1).Value) > 0 And _
(UCase(Trim(CStr(oSourceSheet.Cells(z, lIFCOL2)))) = "FALSE" Or _
Trim(CStr(oSourceSheet.Cells(z, lIFCOL2))) = "") Then
oTargetSheet.Cells(zInsert, 1) = oSourceSheet.Cells(z, 4)
oTargetSheet.Cells(zInsert, 3) = oSourceSheet.Cells(z, 6)
oTargetSheet.Cells(zInsert, 4) = oSourceSheet.Cells(z, 7)
oTargetSheet.Cells(zInsert, 6) = oSourceSheet.Cells(z, 17)
oTargetSheet.Cells(zInsert, 7) = oSourceSheet.Cells(z, 15)
oTargetSheet.Cells(zInsert, 8) = oSourceSheet.Cells(z, 31)
'Einfügezeile erhöhen
zInsert = zInsert + 1
End If
End If
Next z
oSourceFile.Close False
Application.ScreenUpdating = True
Set oTargetSheet = Nothing
Set oSourceSheet = Nothing
Set oSourceFile = Nothing
MsgBox "Import done."
End Sub
soweit so gut. Jedoch hab ich folgendes Problem. Ich möchte wenn einmal Werte importiert und in der Zielmappe bearbeitet wurden nicht mehr überschreiben dürfen. Eine Art Append Geschichte wie man sie aus Access kennt wo man Primärschlüssel vergibt und Duplikate von bestimmten Kombinationen unterbindet. In meinem Fall würde ich gerne in meiner Zielmappe einen Code voran stellen, der die Werte in der Quell- (Spalte D) und Zielmappe (Spalte A) miteinander vergleicht. Bei Übereinstimmung soll nicht importiert werden. Nur Werte die in der Zielmappe noch nicht enthalten sind.
Hat jemand so etwas mal gemacht und könnte mir hierzu ein paar Tipps geben?
Gruß
Michael