У меня есть функция VBA, которая инициализирует сессию лотосных заметок, создает документ и отправляет его по почте. Он также принимает в качестве необязательного параметра NotesRichTextItem, который я добавляю в тело письма.
Однако я получаю сообщение об ошибке «Все объекты должны быть из одного сеанса». Как «импортировать» этот NotesRichTextItem в мой сеанс?
Добавлен код редактирования
Sub SendLotusMail(SubjTxt As String, _
BodyTxt As String, _
EmailTo As String, _
EmailCC As String, _
AutoSend As Boolean, _
Attach As String, _
ReportTitle As String, _
Optional AppendToBody As NotesRichTextItem = Null)
On Error GoTo EH
NtSession.Initialize
OpenMailDb ReportTitle
Set NtDoc = Ntdb.CreateDocument
NtDoc.AppendItemValue "Form", "Memo"
NtDoc.AppendItemValue "SendTo", EmailTo
NtDoc.AppendItemValue "CopyTo", EmailCC
NtDoc.AppendItemValue "Subject", SubjTxt
Set NtBodyRT = NtDoc.CreateRichTextItem("Body")
NtDoc.AppendItemValue "Body", NtBodyRT
If Attach <> "" Then NtBodyRT.EmbedObject EMBED_ATTACHMENT, "", Attach, "Attachment"
NtBodyRT.AppendText BodyTxt
'This next line throws the error "All objects must be from the same session"
NtBodyRT.AppendRTItem AppendToBody
Правка-решение найдено
Мне это не очень нравится, но я обошел все эти проблемы, передав объекту RichTextItem, его родительский NotesDocument и родительский NotesSession его родителя. Итак, теперь я вызываю эту процедуру с 3 дополнительными объектами вместо 1. Ура.
Правка - найдено новое решение
Что ж, предыдущее решение вызывало у меня проблемы, поэтому, пока я не найду (или кто-то не предложит) обходной путь, я просто буду использовать некоторые пользовательские процедуры электронной почты для отчетов, которые требуют этого. Это действительно дублирует некоторый код, но незначительно.