#excel #vba #lotus-notes
Вопрос:
Я использую некоторый код для пересылки электронного письма на адрес, выбранный на рабочем листе. У меня есть подпись в Lotus Notes, но я не хочу, чтобы эта подпись присутствовала при пересылке электронной почты, но поскольку этот код использует NotesUIWorkspace, он автоматически пропускает мою подпись.
Public Sub Forward_Email(findSubjectLike As String, forwardToEmailAddresses As String)
Dim NSession As Object
Dim NMailDb As Object
Dim NViewObj As Variant
Dim NInboxView As Object
Dim NDocument As Object
Dim NUIWorkspace As Object
Dim NUIDocument As Object
Dim NFwdUIDocument As Object
Set NSession = CreateObject("Notes.NotesSession")
Set NMailDb = NSession.CurrentDatabase
Set NUIWorkspace = CreateObject("Notes.NotesUIWorkspace")
For Each NViewObj In NMailDb.Views
If NViewObj.IsFolder And NViewObj.Name = "($Inbox)" Then
Set NInboxView = NViewObj
Exit For
End If
Next
Set NDocument = Find_Document(NInboxView, findSubjectLike)
If Not NDocument Is Nothing Then
Set NUIDocument = NUIWorkspace.EditDocument(False, NDocument)
NUIDocument.Forward
Set NFwdUIDocument = NUIWorkspace.CurrentDocument
Sleep 200
NFwdUIDocument.GoToField "To"
Sleep 200
NFwdUIDocument.InsertText forwardToEmailAddresses
NFwdUIDocument.GoToField "Body"
NFwdUIDocument.Import "HTML File", "HTML FILE DIRECTORY"
NFwdUIDocument.InsertText vbLf
NFwdUIDocument.Send
NFwdUIDocument.Close
Do
Set NUIDocument = NUIWorkspace.CurrentDocument
Sleep 200
DoEvents
Loop While NUIDocument Is Nothing
NUIDocument.Close
Else
MsgBox vbCrLf amp; findSubjectLike amp; vbCrLf amp; "not found in Inbox"
End If
Set NUIDocument = Nothing
Set NFwdUIDocument = Nothing
Set NDocument = Nothing
Set NMailDb = Nothing
Set NUIWorkspace = Nothing
Set NSession = Nothing
End Sub
Private Function Find_Document(NView As Object, findSubjectLike As String) As Object
Dim NThisDoc As Object
Dim thisSubject As String
Set Find_Document = Nothing
Set NThisDoc = NView.GetFirstDocument
While Not NThisDoc Is Nothing And Find_Document Is Nothing
thisSubject = NThisDoc.GetItemValue("Subject")(0)
If LCase(thisSubject) = LCase(findSubjectLike) Then Set Find_Document = NThisDoc
Set NThisDoc = NView.GetNextDocument(NThisDoc)
Wend
End Function
У меня есть подпись по умолчанию, вставленная в «Тело» в виде HTML-файла, поэтому мне не нужна моя собственная подпись, поскольку она не соответствует типу пересылаемых файлов. Есть какие-либо предложения о том, как я могу удалить свою подпись, не отключая ее перед использованием этого макроса?
Комментарии:
1. Моя идея для вас состоит в том, чтобы открыть электронное письмо в режиме редактирования -> скопировать его, установить для пересылки, а затем заменить текст пересылаемого электронного письма, чтобы удалить вашу подпись.
2. Почему вы делаете это с NotesUIDocument вместо NotesDocument, используя класс NotesRichTextItem и обычный ввод-вывод файла вместо метода импорта для вставки содержимого вашего файла? Является ли метод импорта переводом HTML в собственное форматирование заметок для вас? Это было так давно… На самом деле, я никогда не помню, чтобы использовал метод импорта в коде.