Создание слияния электронной почты excel с IBM Notes
Доброе утро,
У меня есть код, который создаст почтовый ящик электронной почты в IBM Notes на основе столбцов в excel. Только проблемы, с которыми я сталкиваюсь, я хотел бы создать отдельные письма для каждого адреса электронной почты в столбце A. Я также не могу понять, как связать его с конкретным файлом для каждого получателя, расположение файлов будет в столбце C. Может кто-нибудь мне помочь?
Sub SendQuoteToEmail() Dim NSession As Object Dim NDatabase As Object Dim NUIWorkSpace As Object Dim NDoc As Object Dim NUIdoc As Object Dim WordApp As Object Dim subject As String Dim EmailAddress As Variant subject = Worksheets("Sheet1").Range("B2") Debug.Print subject Set NSession = CreateObject("Notes.NotesSession") Set NUIWorkSpace = CreateObject("Notes.NotesUIWorkspace") Set NDatabase = NSession.GetDatabase("", "") If Not NDatabase.IsOpen Then NDatabase.OPENMAIL For all Emai-Addresses EmailAddress = Worksheets("Sheet1").Application.Transpose(Range("A2").Resize(Range("A" & Rows.Count).End(xlUp).Row).Value) Set NDoc = NDatabase.CreateDocument With NDoc .Form = "Memo" ' or .ReplaceItemValue("Form", "Memo") .SendTo = EmailAddress .subject = subject End With Set rtitem = NDoc.CreateRichTextItem("Body") Call rt.AppendText(Worksheets("sheet1").Range("d2") & vbLf & vbLf) Call rt.EmbedObject(1454, "", "c:filepath.doc") Call NDoc.Save(True, False) Next ' email-address Set NDoc = NDatabase.CreateDocument With NDoc .SendTo = EmailAddress '.CopyTo = "" .subject = subject .body = Worksheets("sheet1").Range("d2") & vbLf & vbLf .Save True, False End With Set NUIdoc = NUIWorkSpace.EDITDocument(True, NDoc) With NUIdoc Set WordApp = Nothing End With Set NSession = Nothing End Sub
- Использование Mail Merger на Mac с Word 2016. Слияние с электронной почтой является серым /
- Excel остается в памяти после слияния писем VB.NET
- Слияние Word 2007 с двумя столбцами
- Excel macro mailmerge - экспорт в pdf
- Сохранить сгенерированный файл Word с уникальным именем (mailmerge)
- Выбор только одной строки из листа excel (как часть слияния)
- Ошибка времени выполнения 91: переменная объекта или с не заданной переменной блока
- Предотвращение появления текста ошибки в слиянии при отсутствии изображения для отображения
- Как установить адрес электронной почты и тему в MailMerge из VBA
- Сложный псевдо-почтовый слияние
- Программно удалить источник данных Mailmerge с помощью VB.NET
- Подавление пустых строк в слиянии слов «If..then ... else»
- используйте mergemail для Microsoft Word, чтобы создать orgchart
Чтобы прикрепить файлы, посмотрите на метод EmbedObject класса NotesRichTextItem.
Также есть несколько других проблем с вашим кодом. Вы не должны использовать расширенную нотацию при назначении значений полям, используйте метод ReplaceItemValue класса NotesDocument для хранения значений. Поле Body – это поле с расширенным текстом, и вы должны использовать класс NotesRichTextItem для всего, что связано с этим полем, поэтому используйте методы Appendtext и AddNewLine для записи содержимого в поле. Это также позволит вам использовать метод EmbeddObject, о котором я упоминал выше, для прикрепления файлов.
Возможно, вы найдете полезные подсказки в классе почтовых уведомлений. Я только что опубликовал обновленную версию на http://blog.texasswede.com/updated-mailnotification-class-now-with-html-email-support-and-web-links/
Надеюсь, поможет!
Это кажется более важной частью кода для создания писем в Notes: отправьте электронное письмо на определенные контакты Lotus Notes с помощью VBA
Вы хотите, чтобы ваши письма открывались на экране, прежде чем отправлять их, или их можно отправить невидимыми?
UPDATE: предлагаемый код
subject = Worksheets("Sheet1").Range("B2") Debug.Print subject Set NSession = CreateObject("Notes.NotesSession") Set NUIWorkSpace = CreateObject("Notes.NotesUIWorkspace") Set NDatabase = NSession.GetDatabase("", "") If Not NDatabase.IsOpen Then NDatabase.OPENMAIL For all email-addresses EmailAddress = Worksheets("Sheet1").Application.Transpose(Range("A2").Resize(Range("A" & Rows.Count).End(xlUp).Row).Value) Set NDoc = NDatabase.CreateDocument With NDoc .Form= "Memo" ' or .ReplaceItemValue("Form", "Memo") .SendTo = EmailAddress .subject = subject End With set rtitem= NDoc.CreateRichTextItem("Body") Call rt.AppendText(Worksheets("sheet1").Range("d2") & vbLf & vbLf) Call rt.EmbedObject(1454, "", "c:filepath.doc") Call NDoc.Save(True, False) Next ' email-address
Для обработки: Looping, имена файлов, адреса …