Es gibt Frontend- und Backendmethoden.
ws.currentdocument liefert dir das Dokument, das gerade am Bildschirm geöffnet ist, als Frontenddokument.
ws.currentDocument.document liefert dir das Backenddokument, das zu diesem Frontenddokument gehört.
Wenn du kein Dokument am Bildschirm geöffnet hast, bekommst du
Set uidoc = ws.currentdocument
als leer zurück (siehe Debugger)
und da du anschliessend das Backenddokument mit Hilfe des Frontenddokumentes (indirekt über ws.currentdocument ) belegen willst
Set doc = ws.currentdocument.document
kommt dann die Meldung 'Object variable not set', da eben das Frontenddokument nicht da ist, an dem sich dein Skript gerade langhangeln will.
und das hier
Dim doc As NotesDocument
Set doc = ws.currentdocument
kann schon gar nicht funktionieren, weil ws.currentdocument ein NotesUIDocument zurückgibt, und kein Notesdokument.