Retrieve cell values from tables in a Lotus Notes rich-text field
Get LotusScript code to retrieve and display values from cells within a table in a Lotus Notes rich-text field (RTF).
Developers sometimes need to retrieve cell values within a table in a Lotus Notes rich-text field (RTF). The following LotusScript code will display the values in each cell within the body of any Lotus Notes mail document.
GetElementCount is used to count different types of RichTextItems in a field. This example uses the Table type.
Sub Initialize Dim ws As New NotesUIWorkspace Dim s As New NotesSession Dim db As NotesDatabase Dim dc As NotesDocumentCollection Dim maildoc As NotesDocument Dim rtitem As NotesRichTextItem Dim rtnav As NotesRichTextNavigator Set db=s.CurrentDatabase Set dc=db.UnprocessedDocuments If dc.Count>1 Then Msgbox "Please select a single document", MB_OK, "Travel HelpDesk" Continue=False End Else Set maildoc=dc.GetFirstDocument() Set rtitem=maildoc.GetFirstItem("Body") Set rtnav=rtitem.CreateNavigator count = GetElementCount(rtnav, RTELEM_TYPE_TABLE) 'msg$ = msg$ & "Tables:" & Chr(9) & Chr(9) & count% & Chr(10) 'Messagebox msg$,, maildoc.Subject(0) If count=0 Then Messagebox "Body item does not contain a table,",, _ "Error" Exit Sub End If For k=1 To count If rtnav.FindNthElement(RTELEM_TYPE_TABLE,k) Then Dim rttab As NotesRichTextTable Set rttab=rtnav.GetElement Dim rtrange As NotesRichTextRange Set rtrange=rtitem.CreateRange If k=1 Then Call rtnav.FindFirstElement(RTELEM_TYPE_TABLECELL) Else Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL) End If firstFlag = True For i& = 1 To rttab.RowCount For j& = 1 To rttab.ColumnCount If Not firstFlag Then Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL) Else firstFlag = False End If Call rtrange.SetBegin(rtnav) Messagebox rtrange.TextParagraph,, _ "Row " & i& & _ ", Column " & j& Next Next End If Next End If End Sub Function GetElementCount(rtnav As NotesRichTextNavigator, eType As Integer) As Integer GetElementCount = 0 If rtnav.FindFirstElement(eType) Then Do GetElementCount = GetElementCount + 1 Loop While rtnav.FindNextElement() End If End Function
Do you have comments on this tip? Let us know.
This tip was submitted to the SearchDomino.com tip library by member Manikandan.sv. Please let others know how useful it is via the rating scale below. Do you have a useful Lotus Notes, Domino, Workplace or WebSphere tip or code snippet to share? Submit it to our monthly tip contest and you could win a prize.
Related resources from SearchDomino.com:
- Tip: Create a table in a rich-text field
- Expert Advice: Retrieve the values from a view column
- Tutorial: 30 LotusScript tips
- LotusScript Learning Guide
- LotusScript Reference Center