Pracowałem od jakiegoś tutorial on MSDN, aby nauczyć się tworzyć niektóre makra dla programu Outlook. Mam ten podprogram, który zawiesza się z błędem Type mismatch
. Po przejściu przez obsługę błędów po Stop
i Resume
wraca do Next
i kończy kwerendę.Lista dystrybucyjna programu Outlook zawieszona na zapytaniu o elementy kontaktowe
Przeglądając zestaw wyników w Natychmiast, brakuje jednego elementu, który w rzeczywistości jest listą dystrybucyjną zamiast zwykłego kontaktu. Przesunąłem listę mailingową z moich kontaktów do testowania, a błąd się nie wydarzył.
Planuję mieć również inne listy adresowe, ponieważ jest to praca. Czy istnieje sposób na obejście czegoś innego, niż tylko ocalenie ich gdzie indziej?
Oto kod:
Sub ContactName()
On Error GoTo ErrHandler
Dim ContactsFolder As Folder
Set ContactsFolder = Session.GetDefaultFolder(olFolderContacts)
MsgBox ("Contacts found: " & ContactsFolder.Items.Count)
Dim Contact As ContactItem
For Each Contact In ContactsFolder.Items
Debug.Print Contact.CompanyName
Next
Exit Sub
ErrHandler:
Debug.Print Err.Description
Stop
Resume
End Sub
Zgaduję, że pozycja "Mailing List" nie jest "Kontaktem", a zatem "Dla każdego kontaktu w Kontaktach. Folder. Elementy" zawiodą z powodu braku możliwości przesyłania do "Kontaktu". Alternatywą byłoby użycie pętli "FOR" zamiast "FOR EACH". Wtedy powinieneś być w stanie iterować przez "Przedmioty" i testować, jaki typ przedmiotu posiadasz i rzutować odpowiednio przed uzyskaniem dostępu do jego właściwości. – DeanOC
Wydaje się nie działać, to lub nie wiedziałbym, jak napisać to za pomocą pętli "FOR" (tutaj newbie kości), ale jeśli jesteś w stanie przetestować na swoim komputerze z listą mailingową obecną w kontaktach i opublikuj działający kod, chętnie zaakceptuję twoją odpowiedź. – Phrancis