Wenn Du die Notes-Dokumente nicht einfach löschen und neu anlegen kannst (wg. Referenzen), dann mach folgendes:
Type tyRow
col1 as integer
col2 as string
col3 as double
'... usw, je nach Inhalt der Excel-Spalten
End Type
Und dann:
Dim RAMSheet List as tyRow
Damit hast Du eine Liste von Tabellenzeilen-Inhalten definiert. Nun kannst Du Excel-Inhalte zuweisen.
Schleife über alle Excel-Zeilen:
ID$=Cstr( ...hier die Quelle der Excel-ZeilenID...)
RAMSheet(ID$).col1=CInt(... erste Excel-Daten-Spalte...)
RAMSheet(ID$).col2=CStr(... zweite Excel-Daten-Spalte...)
usw.
Nach Durchlauf über alle Excel-Zeilen hast Du alle Excel-Inhalte komplett im RAM und mit der Schlüssel-ID getagged.
Nun Durchlauf über alle Notes-Dokumente, dort die ID extrahieren ...
intSaveFlag=False
currentID$=doc.GetItemValue({ID})(0)
.. und prüfen, ob eine Excel-Zeile mit dieser ID existiert:
If IsElement(RAMSheet(currentID$))=True Then
'gibt's in Notes und Excel, Inhalte vergleichen, ggfs. aktualisieren
If RAMSheet(currentID$).col1<>doc.GetItemValue({col1})(0) Then
'Item muß aktualisiert werden, Inhalte stimmen nicht mehr
intSaveFlag=True
doc.ReplaceItemValue({col1}, RAMSheet(currentID$).col1)
End If '/Item muß aktualisiert werden, Inhalte stimmen nicht mehr
'hier noch weitere Inhalte Notes<>Excel vergleichen u. aktualisieren, falls erforderlich
If intSaveFlag Then
doc.Save(True, True)
End If
Else 'gibt's noch in Notes aber nicht mehr in Excel
doc.Remove(True)
End If '/gibt's in Notes und Excel, Inhalte vergleichen, ggfs. aktualisieren
Ist wirklich viel schneller und eleganter so. Der Trick mit der Liste erspart Dir, die Excel-Tabelle immer wieder von vorne durchkauen zu müssen. Stattdessen fragst Du einfach den List-Tag ab, der mit dem ID-Schlüssel identisch ist.