1) Objekt-Recycling ist nicht das, was Du tun willst.
Aus Deinem Code:
Set doc = view.GetFirstDocument
...
doc.Form = "Memo"
doc.SendTo =ret(x)
doc.Subject = docmailsubject(0)
doc.Body = docmailbody(0)
Call doc.Send( False )'Mail wird verschickt
...
Set doc = view.GetNextDocument( doc )
Du nimmst das Dokument so, wie Du es gefunden hast, verpasst Ihm noch ein paar zusätzliche Felder und verschickst es.
Da darfst Du Dich nicht wundern, wenn die Attachments mitgeschickt werden. Die können in $FILE Items stehen, im Body, ....
Und nein, "doc.Body = docmailbody(0)" überschreibt NICHT die Inhalte des BODY Feldes, sondern hängt den Inhalt von docmailbody(0) an doc.Body an. Siehe dazu den Abschnitt "Extended class syntax" im Designer-Hilfe Dokument zur "AppendItemValue method".
Sauber wird so etwas gelöst, indem man a) einen neues Dokument zum Mailen erstellt und b) die Werte, die gemailt werden sollen über GetItemValue() aus dem Ursprungsdokument holt.
2) Warum verwendest Du mehrere "normale" Dokumente anstelle eines Profildokumentes?
3) Datumsvergleich
docdate = doc.GetItemValue(docvergleichsfeld(0))
docdatumwert = Today-docdate(0)
vergleichswert = docvergleichswert(0) -docdatumwert
Für sowas haben uns die lieben Leute bei Iris/Lotus/IBM notesDateTime.TimeDifference() gegeben.