Ошибка компиляции с поздним связыванием: пользовательский тип не определен со ссылкой на почтовый элемент Outlook в Excel VBA - PullRequest
1 голос
/ 26 июня 2019

Я использую позднюю привязку из 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 ]

2 голосов
/ 26 июня 2019

Я предполагаю, что причина, по которой вы получаете ошибку, заключается в том, что у вас больше нет ссылки на библиотеку объектов outlook, и поэтому MailItem - это неизвестный тип.

Вместо использования TypeOf

If TypeOf olMail Is MailItem Then

используйте функцию TypeName для сравнения имени типа объекта со строкой ...

If TypeName(olMail) = "MailItem" Then

(заметьте, я предполагаю, что имя типа будет MailItem,но вы всегда можете добавить MsgBox TypeName(olMail) просто чтобы быть уверенным!)

0 голосов
/ 28 июня 2019

Функция Type Name несколько дорогая. Свойство Class (реализуемое всеми объектами OOM) будет лучшей альтернативой. Проверьте, что oMail.Class = 43 (43 - OlObjectClass.olMail постоянная)

...