2016-06-27 3 views
0

Доброе утро,Создать первенствовать слияния с IBM Notes

У меня есть некоторый код, который будет создавать MailMerge электронной почты в 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 

ответ

0

Чтобы прикрепить файлы, просмотрите метод EmbedObject класса NotesRichTextItem.

Есть также пара других проблем с вашим кодом. Вы не должны использовать расширенную нотацию при назначении значений полям, используйте метод ReplaceItemValue класса NotesDocument для хранения значений. Поле Тело Поле является полем с расширенным текстом, и вы должны использовать класс NotesRichTextItem для всего, что связано с этим полем, поэтому используйте методы Appendtext и AddNewLine для записи содержимого в поле. Это также позволит вам использовать метод EmbeddObject, о котором я упоминал выше, для прикрепления файлов.

Возможно, вы найдете полезные подсказки в классе уведомлений по почте. Я только что опубликовал обновленную версию на http://blog.texasswede.com/updated-mailnotification-class-now-with-html-email-support-and-web-links/

Надеюсь, это поможет!

+0

не установлен Domino. Это создает проблему? Кажется, я не могу получить файл для прикрепления, независимо от того, что я пытаюсь сделать. – DHuber

0

Это кажется более релевантной частью кода для создания почты в Notes: send email to a specific Lotus Notes contacts using 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, имена файлов, адреса ...

+0

Изначально я хотел бы открыть их на экране или в папках черновиков, поскольку я отправляю конфиденциальную информацию, и я хочу убедиться, что я отправляю правильные вложения правильным поставщикам. – DHuber

+0

Я должен также упомянуть, что это корпоративная учетная запись электронной почты, у нас нет Lotus Notes Domino или Print Merger, поэтому я должен пойти на нее так. Я не кодер, но я единственный человек в офисе, который даже попытается VBA, поэтому я делаю все, что в моих силах, без обучения. – DHuber

+0

Вы действительно можете открыть одну почту на экране, или два, или три, в то же время, но я думаю, что это не реально выполнимо, когда вы отправляете 100 писем или около того. Поэтому вам придется создавать и показывать их по одному, а затем одобрять их. Сохранить как черновик может быть лучшей возможностью. Я изменил свой ответ. –

 Смежные вопросы

  • Нет связанных вопросов^_^