后期绑定编译错误:未定义引用Excel VBA中的Outlook mailitem的用户定义类型

时间:2019-06-26 12:12:03

标签: excel vba outlook

我正在使用Excel的后期绑定。

我明白了

  

编译器错误:未定义用户定义类型

针对:

If TypeOf olMail Is MailItem Then

我声明以下变量:

Dim olApp As Object
Dim olNs As Object
Dim Fldr As Object
Dim olItms As Object
Dim olMail As Object

Set olApp = CreateObject("Outlook.Application")
Set olNs = olApp.GetNamespace("MAPI")
Set Fldr = olNs.GetDefaultFolder(olFolderInbox)
Set olItms = Fldr.Items

代码可以正常工作,但是由于用户使用的Outlook版本不同,我不得不更改为后期绑定。

2 个答案:

答案 0 :(得分:2)

我猜测您收到错误的原因是因为您不再引用Outlook对象库,因此MailItem是未知类型。

代替使用TypeOf

If TypeOf olMail Is MailItem Then

使用TypeName函数将对象类型名称与字符串进行比较...

If TypeName(olMail) = "MailItem" Then

(请注意,我假设类型名称为MailItem,但您可以随时输入MsgBox TypeName(olMail)以确保!)

答案 1 :(得分:0)

类型名称功能有些昂贵。 Class属性(由所有OOM对象实现)将是更好的替代方法。检查oMail.Class = 43(43是OlObjectClass.olMail常量)