Как выполнить проверку типов в Outlook VBA - PullRequest
0 голосов
/ 22 мая 2019

Я пишу макрос для чтения почты и автоматического написания ответа.Почта, которую я читаю, отформатирована в HTML, поэтому я использую Microsoft HTML Object library.Я создал «элемент» следующим образом:

Dim element As MSHTML.IHTMLElement
...
Set oExplorer = Application.ActiveExplorer
If oExplorer Is Nothing Then
  MsgBox "No current mail"
Else
  Set NewMail = oExplorer.Selection.Item(1)
HtmlDoc.Body.innerHTML = NewMail.HtmlBody
...
        For Each element In HtmlDoc.all:
          If TypeName(element) = "HTMLHeaderElement" Then
            ...
          If ((InStr(1, element.innerText, "_Something", vbTextCompare)) And _
              (TypeName(element) = "HTMLTableCell") And _
              (customerName <> "")) Then
            ...

Это работает нормально, но мне не нравится проверка жестко закодированных типов.

В ближайшем окне япытаясь использовать TypeOf, но это не работает, как вы можете видеть:

? TypeName(element)
HTMLTableCell <= this, I know, is correct

? TypeOf element Is HTMLHeaderElement
True          <= this, I know, is wrong!!!

Однако в других случаях TypeOf, кажется, работает нормально:

' Browse through a mailfolder
If TypeOf internal_folder.Items(i) Is MailItem Then <= this, I know, is working fine.

Кто-нибудь знает, как мне избежать использования жестко закодированных имен типов и почему TypeOf иногда работает, а иногда нет?

Заранее спасибо

...