'Reading mail RTFbody fails with error 'not implemented'

I have code that reads mail to generate a task with the mail's content.

In a few cases this hits a problem, when reading the RTFbody from the mail, saying "not implemented".

Can I test against this? Like WHEN IS NULL ... which checks if a variable has appropriate content.

enter image description here

Sub CreateTempTaskFromMail()

    Dim oMail As Outlook.MailItem
    Set oMail = ActiveInspector.CurrentItem
        
    Dim s, sNr As String
    s = oMail.subject
    
    Dim oTask As Outlook.TaskItem
    Set oTask = CreateTaskWithTempFolder(s, False)  ' Function creating and returing task
        
    oTask.RTFBody = oMail.RTFBody
    
End sub

I tried to test several ways if RTFbody has a problem. All of these approaches throw an error.

If oMail.RTFBody Is Nothing Then Stop
If IsError(oMail.RTFBody) Then Stop
If IsMissing(oMail.RTFBody) Then Stop
If IsEmpty(oMail.RTFBody) Then Stop


Solution 1:[1]

If there is absolutely no real solution then

Option Explicit

Sub CreateTempTaskFromMail()

Dim oObj As Object
Dim oMail As mailItem
Dim oTask As TaskItem

Dim s As String

Set oObj = ActiveInspector.currentItem

If oObj.Class = olMail Then

    Set oMail = oObj
    s = oMail.subject
    
    Set oTask = CreateTaskWithTempFolder(s, False)  ' Function creating and returing task
    
    ' If you absolutely cannot determine the problem
    ' https://excelmacromastery.com/vba-error-handling#On_Error_Resume_Next
    On Error Resume Next
    
    oTask.RTFBody = oMail.RTFBody
    
    If Err <> 0 Then
        Debug.Print "Error was bypassed using a technique that is to be avoided."
        Exit Sub
    End If
    
    ' Consider mandatory AND as soon as possible
    On Error GoTo 0
    
    oTask.Display

Else

    Debug.Print "not a mailitem"
    
End If

End Sub

Solution 2:[2]

Before accessing the RTFBody property in the code I'd suggest checking the item's type first to make sure such property exists for a specific item type:

If TypeOf item Is MailItem Then
  ' do whatever you need with RTFBody here
End If

Or

If TypeName(item) = "MailItem" Then
 ' do whatever you need with RTFBody here
End If

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 niton
Solution 2 Eugene Astafiev