Прежде всего: НИКОГДА не пишите ни одной строки кода без обработчика ошибок.
Тем не менее, самый простой обработчик ошибок будет
On Error Goto ErrorHandler
...your complete code goes here
EndOfRoutine:
Exit Sub
ErrorHandler:
Messagebox Err & "," & Error & " in line " & Erl
Resume EndOfRoutine
Это дало бы вам эту строку ошибки:
Set db = sess.CurrentDatabase
Но подождите: какая переменная объекта не установлена?
Это "sess", как вы только что написали:
Dim sess as NotesSession
Назначено, но не установлено ... вам нужно либо:
Dim sess as New NotesSession
Или, если вы хотите сохранить свою линию, то непосредственно перед назначением db:
Set sess = New NotesSession
Дополнительный совет: поиск документа по его NoteID не является хорошей идеей, а жесткое кодирование - еще хуже: NoteId изменяется в разных репликах. Этот же документ будет иметь другой NoteId в другой реплике базы данных (например, в локальной реплике или в кластере). И если кто-то удаляет этот документ и воссоздает его, вам необходимо обновить код. Используйте отсортированный вид и GetDocumentByKey с определенным ключом, который вы установили в своем документе или документе профиля, для хранения этой информации. Или, по крайней мере, используйте DocumentUniqueId, так как он одинаков в каждой реплике (хотя проблема восстановления остается неизменной)