Salvare i contatti di outlook su file CSV con VBA

Articolo che illustra una tecnica di come salvare su un file di tipo csv tutti i contatti presenti in Outlook, script da eseguire in ambiente Vba di Outlook.

il
Sviluppatore Microsoft .Net, Collaboratore di IProgrammatori

In questo articolo articolo vedremo come poter creare uno script da utilizzare in vba per Outlook, che permette di generare un file CSV  contenente le informazioni dei contatti.

In particolare vedremo come creare un file contenente le informazioni relativo a nome, cognome e compleanno.

Stesura del codice

Si apre Outlook, nel nostro caso, abbiamo effettuato il test sulla versione 2016, con esito positivo.

Una volta aperto Outlook, facciamo click sulla voce "Sviluppo" e poi "Visual Basic", se non è presente la voce di menu "Sviluppo", fate click in nella voce di menu "File", "Opzioni", selezioniamo la voce "Personalizza la barra Multifunzione" e nella colonna "Schede Principali" mettiamo la spunta su Sviluppo.

A questo punto sarà visibile tale voce.

Dopo aver fatto click sulla voce "Visual Basic" e quindi aperto l'editor di Visual Basic Application, facciamo click sulla voce "Strumenti" e poi "Riferimenti", a questo punto selezioniamo o meglio mettiamo la spunta sulla voce "Microsoft Scripting Runtime", e confermiamo la finestra tramite il pulsante "OK", il tutto come mostrato in figura 1.

Figura 1 - La finestra dei riferimenti

Tramite gli oggetti di tipo, folder, ed items, andremo a gestire gli elementi dei contatti, ossia i vari contatti, mentre l'oggetto di tipo filestystemobject permette di creare il file di testo contenente i valori che riguardano, il nome, cognome e data di nascita del contatto.

Qui di seguito si riporta il frammento di codice

Sub SalvaContatto()
Dim CartellaContatti As Outlook.Folder
Dim Contatti As Outlook.Items
Dim ResItems As Outlook.Items
Dim Contatto As ContactItem
Dim objFS As New Scripting.FileSystemObject, objFile As Scripting.TextStream
Dim NomeFile As String
Set CartellaContatti = Session.GetDefaultFolder(olFolderContacts)
NomeFile = "E:\test.csv"
Set objFile = objFS.CreateTextFile(NomeFile, True)
If objFile Is Nothing Then
MsgBox "Errore creazione file '" & NomeFile & "'.", vbOKOnly + vbExclamation _
, "Errore"
Exit Sub
End If
With objFile
.Write "Nome" & ";" & "Cognome" & ";" & "Data Nascita"
.Write vbCrLf
End With
Set Contatti = CartellaContatti.Items
For Each Contatto In Contatti
With objFile
.Write Contatto.FirstName & ";" & Chr(34) & Contatto.LastName & Chr(34) & ";" & Format(Contatto.Birthday, "dd") & "/" & Format(Contatto.Birthday, "mm") & "/" & Format(Contatto.Birthday, "yyyy")
.Write vbCrLf
End With
Next
objFile.Close
Set objFS = Nothing
Set objFile = Nothing
Set Contatto = Nothing
Set Contatti = Nothing
Set CartellaContatti = Nothing
End Sub

Ora che abbiamo scritto il codice per la generazione del file "Csv" con i valori dei contatti presenti nella rubrica di Outlook, non ci resta che eseguire la procedura, cambiando ovviamento il valore del percorso del file dove verrà creato.

Conclusioni

L'articolo ha voluto fornire al lettore una tecnica di come salvare su un file di testo di tipo CSV i contatti presenti in rubrica, l'esempio ha preso in esame solo alcune proprietà del contatto, che sono nome, cognome e compleanno, ma volendo possiamo rilevare altre e più informazioni.