I've always had great luck with this function:
Function StripHTML(strText)
'Strips the HTML tags from the text passed (strText). AK
'Checking for HTML tag opening brackets
If InStr(1, strText, "<") = 0 Then
'No opening brackets, no chance of HTML being used
'So just return the original string. AK
StripHTML = strText
Exit Function 'Abort
End If
'This takes the potential HTML text passed and
'splits it up into an array to loop through. AK
Dim arySplit, lngLoop, lngStart, strOutput
arySplit = Split(strText, "<")
'Determine where to start parsing
If Len(arySplit(0)) > 0 Then
lngStart = 1 'First character is an opening tag
Else
lngStart = 0
End If
'Taking out the HTML opening tags
For lngLoop = lngStart To UBound(arySplit)
If InStr(arySplit(lngLoop), ">") Then
arySplit(lngLoop) = Mid(arySplit(lngLoop),
InStr(arySplit(lngLoop), ">") + 1)
Else
arySplit(lngLoop) = "<" & arySplit(lngLoop)
End If
Next
strOutput = Join(arySplit, "")
strOutput = Mid(strOutput, 2 - lngStart)
strOutput = Replace(strOutput, ">", ">")
strOutput = Replace(strOutput, "<", "<")
StripHTML = strOutput
End Function