SWG Career Development: Pulling it All Together in 2010 Discus
Lotus Notes Mail Merge Tool
Instructions for Installation and Use
Eric WeinbergAugust 2010
**Special Thanks to Sacha Chua for writing the code and making Mail Merge in Lotus Notes possible!**
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.
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.
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.
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.
'Mail merge script by Sacha Chua ([email protected])
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
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.
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**
Lotus Notes Mail Merge Installation: Run Agent
7. At the top, click Actions > Mail Merge
8. Select your sending option
Select OKChoose 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.**
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**
Lotus Notes Mail Merge Installation: Additional Tips
Backup:Additional (Advanced) Tips
Lotus Notes Mail Merge Application: Additional Tips
The mail merge agent can be utilized in a number of ways. The previous example highlighted the basics of how it works. Here are a few tips and ideas:
To have more than one recipient or more than one person on copy, use a ,
If you have data with the e-mail addresses in separate cells, CONCATENATE can help =CONCATENATE(Cell1, , ,Cell2)
Creatively applying functions such as VLOOKUP, TRIM, PROPER, and IF can also help transform a spreadsheet or data you already have into a format that is mail merge friendly.
The text that is fed into the e-mail can be as little as one character or as big as an entire paragraph.
Setting up a stationery for the task at hand is simple and straightforward; ensuring the spreadsheet is mail merge friendly can be complex and require more advanced manipulation of the data using some of the functions listed above and more.
Start small and simple to familiarize yourself with the tool.
2121SWG HR 2009 IBM Corporationibm_light_gray_logo_300dpi
2121TEXTUR~21ibm_white_logo_300dpiGlobal S&D Strategy & Transformation 2009 IBM CorporationWork-in-Progress
SWG HR
2009 IBM CorporationIBM Confidential
HR Workforce Management Confidential | 2009 IBM Corporation
Copyright IBM Corporation 2009
May 26, 2010
DRAFT - ESTIMATE 2007 IBM Corporation
IBM Confidential 2007 IBM Corporation
HR IT Strategy: Simply Better HR!IBM Confidential
June 1-3, 2010
Click to edit the title text format
Click to edit the outline text format
Second Outline Level
Third Outline Level
2010 IBM Corporation
SWG HR
2009 IBM CorporationIBM Confidential
Click to edit the title text format
2009 IBM Corporation
2121
SWG HR 2009 IBM Corporationibm_light_gray_logo_300dpi