Stavo lavorando da alcuni tutorial on MSDN per imparare a fare alcuni macro per Outlook. Ho questa subroutine che si blocca con un errore Type mismatch
. Passando attraverso la gestione degli errori dopo Stop
e Resume
, questo torna a Next
e termina la query.Elenco di distribuzione di Outlook riagganciare sulla query degli elementi di contatto
Guardando attraverso il set di risultati in Immediato, manca un elemento che è in realtà una mailing list di distribuzione invece di un normale contatto. Ho spostato la mailing list dai miei contatti per il test e l'errore non si è verificato.
Ho in programma di avere anche altre mailing list, dato che questo è per lavoro. C'è una soluzione alternativa come un modo per sfuggire ad essa, oltre a salvarli da qualche altra parte?
Ecco il codice:
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
Suppongo che l'elemento 'Mailing List' non sia un' Contatto' e quindi 'Per ogni contatto in ContattiFolder.Items' non riuscirà a causa del non essere in grado di eseguire il cast di' Contatti'. Un'alternativa sarebbe utilizzare un ciclo 'FOR' piuttosto che' FOR EACH'. Quindi dovresti essere in grado di scorrere gli 'item' e testare il tipo di elemento che hai e lanciare di conseguenza prima di accedere alle sue proprietà. – DeanOC
Non sembra funzionare, o non saprei scriverlo con un ciclo 'FOR' (newbie bare-bones qui) ma se sei in grado di testare sul tuo computer con una mailing list presente nei contatti e postare il codice di lavoro, sarò felice di accettare la tua risposta. – Phrancis