outlook-vba
Introduzione Parte 2: archivi e cartelle di livello superiore
Ricerca…
introduzione
Prima parte di un'introduzione ai negozi e alle cartelle che contengono. Contiene macro per visualizzare (1) i nomi dei negozi accessibili e (2) i nomi dei negozi accessibili e le cartelle di livello superiore al loro interno.
2.1 Conoscenza pregressa prevista
- Sei un utente di Outlook e comprendi termini come "email", "tempo di ricezione", "oggetto" e "Riquadro delle cartelle".
- Sai come accedere a Visual Basic Editor di Outlook e creare un modulo. Vedi Introduzione Parte 1 se necessario.
- Hai almeno una conoscenza di base di VBA. Dichiaro Subroutine e variabili senza spiegazione. Uso Withs, Ifs e Loops senza spiegazione. Ti dico che qualcosa è una collezione. Ti dico di copiare il codice su un modulo ed eseguirlo. Esistono molti tutorial online, anche se la maggior parte sono per Excel VBA e si concentrano maggiormente sull'uso della lingua con Excel rispetto alla lingua. La ricerca di "tutorial VBA" fa apparire alcuni che si concentrano sulla lingua più dell'applicazione che sembrano soddisfacenti.
- Non è necessario conoscere il modello a oggetti di Outlook; questo tutorial ti presenta una piccola parte di esso.
2.2 Negozi
Outlook memorizza le e-mail, gli elementi del calendario, le note, le attività e così via in file noti come Negozi . Se guardi il tuo pannello delle cartelle vedrai qualcosa come:
Aaaaaaaaaa
Inbox
Drafts
Deleted Items
: :
Bbbbbbbbbb
Inbox
Drafts
Deleted Items
: :
Cccccccccc
: :
"Aaaaaaaaaa", "Bbbbbbbbbb" e "Cccccccccc" sono i nomi utente o di visualizzazione dei Negozi. Ho sempre accettato le impostazioni predefinite di Outlook per questi nomi che sono cambiati nel corso degli anni. Una volta che il default era il mio nome ora è il mio indirizzo email. Il nome file per questi negozi potrebbe essere lo stesso ma con un'estensione come PST o OST o potrebbe essere qualcosa di completamente diverso. Una macro VBA richiede il nome utente per accedere a un negozio e non riguarda i nomi dei file o l'estensione.
Puoi avere quanti negozi desideri. Ho "Outlook data file" che è stato creato per me quando ho installato Outlook. Quando ho aggiunto account per i miei indirizzi email, Outlook ha creato nuovi negozi denominati per l'indirizzo di posta elettronica come "[email protected]" e "[email protected]". Per ridurre le dimensioni del mio negozio principale, salvo vecchie email nei negozi con nomi come "Archivio 2015".
Se sei un utente aziendale, puoi avere accesso a negozi condivisi o ai negozi di colleghi.
Le macro sottostanti mostrano tre diversi modi di elencare i negozi a cui è possibile accedere. Ti suggerisco di creare un nuovo modulo per contenere il codice sottostante e di utilizzare F4 per accedere alle proprietà del modulo in modo da poterlo chiamare "ModIntro" o un altro nome di tua scelta. Se hai completato la parte 1 di questa serie, avrai già questo modulo.
Copia queste macro in un modulo e verifica che ciascuna fornisca lo stesso risultato.
Sub ListStores1()
Dim InxStoreCrnt As Integer
Dim NS As NameSpace
Dim StoresColl As Folders
Set NS = CreateObject("Outlook.Application").GetNamespace("MAPI")
Set StoresColl = NS.Folders
For InxStoreCrnt = 1 To StoresColl.Count
Debug.Print StoresColl(InxStoreCrnt).Name
Next
End Sub
Sub ListStores2()
Dim StoresColl As Stores
Dim StoreCrnt As Store
Set StoresColl = Session.Stores
For Each StoreCrnt In StoresColl
Debug.Print StoreCrnt.DisplayName
Next
End Sub
Sub ListStores3()
Dim InxStoreCrnt As Long
With Application.Session
For InxStoreCrnt = 1 To .Folders.Count
Debug.Print .Folders(InxStoreCrnt).Name
Next
End With
End Sub
Troverete con VBA che ci sono spesso diversi metodi per ottenere lo stesso effetto. Sopra ho mostrato tre metodi per accedere ai negozi. Non è necessario ricordarli tutti - scegli il tuo preferito - ma devi essere consapevole del fatto che ci sono diversi metodi perché altre persone, di cui potresti aver bisogno di studiare il codice, avranno diversi preferiti.
Le variabili StoresColl
nelle macro ListStores1()
e ListStores2()
sono entrambe raccolte ma contengono diversi tipi di oggetto: Store
e Folder
. Un oggetto Store
può solo fare riferimento a un file sul disco. Una Folder
può fare riferimento a un file su disco ma può anche fare riferimento a cartelle all'interno di un archivio come "Posta in arrivo" e "Posta inviata". Stores
, Folders
, Store
e Folder
fanno tutti parte del modello a oggetti di Outlook. Questa serie di tutorial ti introduce al modello ma non è una definizione formale. Se vuoi una definizione formale, digita "outlook vba object model" nel tuo motore di ricerca preferito. Assicurati di guardare la versione VBA del modello.
2.3 Cartelle di primo livello
Nell'esempio del riquadro Cartelle sopra riportato, elenco solo tre cartelle standard: "Posta in arrivo", "Bozze" e "Elementi eliminati". Esistono altre cartelle standard e puoi creare tutte le cartelle che desideri. Alcune persone creano cartelle in Posta in arrivo ma preferisco creare nuove cartelle allo stesso livello di Inbox. Le tue cartelle possono avere sotto-cartelle che possono avere le loro sottocartelle a qualsiasi profondità.
La seguente macro produrrà un elenco del modulo:
A
A1
A2
A3
B
B1
B2
C
C1
C2
C3
C4
dove A, B e C sono negozi e A1, B1, C1 e così via sono cartelle all'interno di A, B e C. Se A1, B1, C1 e così via hanno sottocartelle, non saranno elencate da questa macro. L'accesso a cartelle più nidificate sarà trattato nella prossima parte di questo tutorial.
Sub ListStoresAndTopLevelFolders()
Dim FldrCrnt As Folder
Dim InxFldrCrnt As Long
Dim InxStoreCrnt As Long
Dim StoreCrnt As Folder
With Application.Session
For InxStoreCrnt = 1 To .Folders.Count
Set StoreCrnt = .Folders(InxStoreCrnt)
With StoreCrnt
Debug.Print .Name
For InxFldrCrnt = .Folders.Count To 1 Step -1
Set FldrCrnt = .Folders(InxFldrCrnt)
With FldrCrnt
Debug.Print " " & .Name
End With
Next
End With
Next
End With
End Sub
2.4 Cosa dovresti ricordare da questo tutorial
- Un negozio è un file in cui Outlook memorizza le e-mail, gli elementi del calendario, le note, le attività e così via.
- Un archivio può contenere cartelle standard di Outlook come "Posta in arrivo" e "Posta inviata".
- Un negozio può contenere anche cartelle create dall'utente.
- Entrambe le cartelle standard di Outlook e le cartelle create dall'utente possono contenere sottocartelle create dall'utente, sottocartelle secondarie e così via a qualsiasi profondità.
- Come elencare i negozi.
- Come elencare i negozi e le cartelle di livello superiore all'interno di tali negozi.
Confessione: non ricordo nessuno dei "come". Ho subroutine e funzioni che ricordano per me.