The operative part of the code is

If InStr(1, vText(i), "5.tour_booked : ") > 0 Then
vItem = Split(vText(i), Chr(58))
sSubject1 = "Tour booked, " & Trim(vItem(1))
End If
If InStr(1, vText(i), "5.tour_price : ") > 0 Then
vItem = Split(vText(i), Chr(58))
sSubject2 = "Price " & Trim(vItem(1))
End If

This explicitly looks for the particular texts in the message bodies. The text must be an exact reflection of what is in the message and unique to the line of text in question. The fact that it doesn't crash, suggests that the texts are not found. As there is some scope for differences related to the number of spaces, you could use.

"5.tour_booked" and "5.tour_price"

as these are unique to the message texts and should be common to both styles of message, regardless of the spacing. If this doesn't work, the implication is that the message format is not exactly as your mock-up.

Note that the search string is case sensitive. If there is the likelihood of mixed cases then use instead:

If InStr(1, LCase(vText(i)), "5.tour_booked") > 0 Then
vItem = Split(vText(i), Chr(58))
sSubject1 = "Tour booked, " & Trim(vItem(1))
End If
If InStr(1, LCase(vText(i)), "5.tour_price") > 0 Then
vItem = Split(vText(i), Chr(58))
sSubject2 = "Price " & Trim(vItem(1))
End If