Run-time Error '13' Type mismatch

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

Hello,

I'm trying to get all the subject lines from a specific folder. Sometimes I
get the error 13 saying type mismatch for the following line:
Set oCurrentEmail = oFolderEMail.Items.Item(i)

I think its because either it came across a read receipt or an email item
that it could not recognize. How can I skip that item and move on to the
next one. Also, sometimes it does go thru with read recipts but it wont pick
up the subject line.

Any help would be greatly appreciated.

Thanks.
 
I tried to handle the message by saying
ErrorHandler:
If Err.Number > 0 Then
i = i + 1
Resume Next
End If

It goes to the next message but it duplicated the subject line from previous
message eventhough I'm using oCurrentEmail.Subject to get the subject line.

What type of message class would be an email item. I did go thru help and I
think it would be olMail but then read receipt would probably come under the
same class.

Thanks.
 
If you are looping always clear your variables in each pass so they don't
have data from a previous item if there's a failure of some kind. That's a
general rule, not specific to this case only.

Class == olMail is what you want.
 
I'm running the program to pick up Subject lines from the email. So, I have
to loop through the mailbox based on a date criteria. But sometimes, for
unknown reason, I get Runtime Error 13 type mismatch while its looping
through emails. I cant figure out why would I get the error on certain
emails and not others. It is completely random. I have tried to take the
specific email out of the mailbox based on which email it was on while the
error occured and then run it again it still gives the same error...so I'm
just not sure what's causing the error. I get the error on the following
line of code:
For i = 1 To iCount
Set oCurrentEmail = oFolderEMail.Items.Item(i) --error 13
 
As Ken has already mentioned, you need to test the Class property using late
binding (note the generic Object below) before you cast a variable to
Outlook.MailItem:

Dim Items As Outlook.Items
Dim DummyItem As Object
Dim CurrentEmail As Outlook.MailItem

set Items = oFolderEMail.Items
iCount = Items.Count
For i = 1 To iCount
set DummyItem = Items.Item(i)
if DummyItem.Class = 43 Then
Set oCurrentEmail = DummyItem


Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool
 
Or even using:

If Items.Item(i).Class = 43 Then
Set oCurrentEmail = Items.Item(i)
' etc.
 
Thanks...That worked. Initially, I was setting my dummyitem as mail item
which was why I continued to get the error message. After setting it up as
an object it worked fine.
 
Back
Top