This presentation takes you step-by-step through creating and running an agent in Lotus Notes that enables Mail Merge functionality - based on the script written by Sacha Chua.
1. Lotus Notes Mail Merge Tool Instructions for Installation and Use Eric Weinberg August 2010 **Special Thanks to Sacha Chua for writing the code and making Mail Merge in Lotus Notes possible!**
2. Lotus Notes Mail Merge Installation: Create Agent Create Agent In order to create the agent, you need to have this presentation open (not a hard copy) so you can go into the notes view and copy and paste text.
3. Lotus Notes Mail Merge Installation: Create Agent 1. While in your mail view, click Create > Agent which will open the IBM Lotus Domino Designer and create a blank agent for you to work with.
4. Lotus Notes Mail Merge Installation: Create Agent 2. Choose and enter a Name for the agent, such as “Mail Merge” and then close this dialog box.
5. Lotus Notes Mail Merge Installation: Create Agent 3. Select (Declarations) on left, and enter this text on the right: %INCLUDE "lsconst.lss" 4. Select Initialize on left, and enter the text that is included in the Notes to this chart on the line in between Sub Initialize and End Sub on right: 5. Save your changes and close the domino designer. To see the notes, go to View > Page > Notes View After step 5, you have successfully created the Agent.
6. Lotus Notes Mail Merge Installation: Run Agent Run Agent In order to run the agent, you need to have created a stationery (or a drafted note) and an excel file that is already set up with the data you want to merge. This part of the deck provides examples of both that are easily imitable.
7. Lotus Notes Mail Merge Installation: Run Agent 6. On the left side, scroll down to Tools > Stationery. Select a pre-set stationery created specifically for the task at hand. **Stationery Example**
8. Lotus Notes Mail Merge Installation: Run Agent 7. At the top, click Actions > Mail Merge 8. Select your sending option Select OK Choose your source file, and voila! **It's a good idea to select “Draft messages without sending,” test with a small, test spreadsheet, and check the results before sending messages out.**
9. Lotus Notes Mail Merge Application: Excel Example This example on chart 5 would require an excel spreadsheet that looks like this to run correctly: In the stationery that you create, any text [inside square brackets] will be replaced by the values in your excel spreadsheet in those columns. You can also use [to]; [cc]; [bcc]; and [subject]. One note will be generated per row in the excel spreadsheet until there is a blank line. **Required Excel Spreadsheet Example**
'Mail merge script by Sacha Chua (sacha@sachachua.com) Dim ws As NotesUIWorkspace Set ws = New NotesUIWorkspace Dim sendTypes(1) As String Dim sendValue As String Dim errorCount As Integer errorCount = 0 sendTypes(0) = "Draft messages without sending" sendTypes(1) = "Send messages" sendValue = ws.Prompt(PROMPT_OKCANCELLIST, "Sending options", "What would you like to do?", "", sendTypes) If (sendValue = "") Then Exit Sub End If Dim fileName As String Dim strXLFilename As String 'Prompt for the filename - should be a Microsoft Excel file with columns, where the first row of each column 'is a token that will be used when replacing text in the body of the message 'Special tokens: [to], [cc], [subject] set the appropriate fields 'Make sure the first column does not have any blank cells fileName$ = ws.Prompt(12, "Select file", "3") If fileName$ = "" Then Exit Sub 'Cancel was pressed End If strXLFilename = fileName$ Dim s As New NotesSession Dim uidoc As NotesUIDocument Dim partno As String Dim db As NotesDatabase Dim view As NotesView Dim doc As NotesDocument Dim collection As NotesDocumentCollection Dim memo As NotesDocument Dim body As NotesRichTextItem Dim newBody As NotesRichTextItem Dim range As NotesRichTextRange Dim count As Integer Set db = s.CurrentDatabase Set collection = db.UnprocessedDocuments Set memo = collection.getFirstDocument() Dim varXLFile As Variant 'Get data from the spreadsheet Set varXLFile = CreateObject("Excel.Application") varXLFile.Visible = False Dim varXLWorkbook As Variant Set varXLWorkbook = Nothing varXLFile.Workbooks.Open strXLFilename Set varXLWorkbook = varXLFile.ActiveWorkbook Dim varXLSheet As Variant Set varXLSheet = varXLWorkbook.ActiveSheet Dim lngRow As Integer Dim columnNo As Integer Dim token As String Dim value As String lngRow = 2 Dim maildoc As NotesDocument While (Not (varXLSheet.Cells(lngRow, 1).Value = "")) 'Fill in the template Dim subject As String subject = memo.Subject(0) Set body = memo.GetFirstItem("Body") 'Compose message Set maildoc = New NotesDocument(db) Set maildoc= db.CreateDocument() maildoc.Form = "Memo" maildoc.Subject = subject Set newBody = maildoc.CreateRichTextItem("Body") Call newBody.appendRTItem(body) Set range = newBody.CreateRange 'Count the number of fields 'Look up tokens from the column headings and replace them columnNo = 1 While Not(varXLSheet.Cells(1, columnNo).Value = "") token = varXLSheet.Cells(1, columnNo).Value value = varXLSheet.Cells(lngRow, columnNo).Value count = range.FindAndReplace(token, value, 16) If (token = "[to]") Then maildoc.SendTo = value End If If (token = "[cc]") Then maildoc.CopyTo = Split(value, ",") End If If (token = "[subject]") Then maildoc.Subject = value End If columnNo = columnNo + 1 Wend On Error Goto save If (sendValue = sendTypes(0)) Then Call maildoc.Save(True, False) Else maildoc.SaveMessageOnSend = True maildoc.PostedDate = Now() Call maildoc.Send(False) Call maildoc.Save(True, True) End If Goto nextrow save: Messagebox("Error processing " + maildoc.sendTo) errorCount = errorCount + 1 Resume Next nextrow: lngRow = lngRow + 1 Wend If (sendValue = sendTypes(0)) Then Msgbox "Drafted " & (lngRow - errorCount - 2) & " message(s). Errors: " & errorCount Else Msgbox "Sent " & (lngRow - errorCount - 2) & " message(s). Errors: " & errorCount End If Call varXLFile.Quit