Gerry,
I didn't have time to work it all out yesterday. I think this is probably better all around:
Sub Test()
Dim oTbl As Word.Table
Dim oCell As Word.Cell
Set oTbl = Selection.Tables(1)
For Each oCell In oTbl.Range.Cells
MsgBox CellGetText(oCell)
Next oCell
End Sub
Function CellGetText(ByRef oCell As Word.Cell) As String
Dim oRng As Word.Range
Dim oFF As FormField
Dim strTemp As String
Dim lngIndex As Long
lngIndex = 1
Set oRng = oCell.Range
' Clip end of cell marker
oRng.MoveEnd wdCharacter, -1
' Formfield dropdownlist and checkboxes are represented in the text string by Chr(21)
strTemp = oRng.Text
' Formfield dropdownlist and checkboxes are represented in the text string by Chr(21),
' formfield text is represented by the actual text.
' Accordingly, we have to convert the Chr(21) representing the checkboxes and dropdowns to a text value:
For lngIndex = 1 To oRng.FormFields.Count
Set oFF = oRng.FormFields(lngIndex)
Select Case oFF.Type
Case 70
'Do nothing
Case 71
If oFF.CheckBox.Value = True Then
strTemp = Replace(strTemp, Chr(21), "true", , 1)
Else
strTemp = Replace(strTemp, Chr(21), "false", , 1)
End If
Case 83
strTemp = Replace(strTemp, Chr(21), oFF.DropDown.ListEntries(oFF.DropDown.Value).Name, , 1)
End Select
Next lngIndex
CellGetText = strTemp
End Function