Я пишу макрос для чтения почты и автоматического написания ответа.Почта, которую я читаю, отформатирована в 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
иногда работает, а иногда нет?
Заранее спасибо