Esportare la posta elettronica da Outlook ad Access.

In molti contesti lavorativi pu risultare necessario esportare le e-mail gestite con Microsoft Outlook all'interno di un database Access.

La procedura passo-passo integrata nel client di posta Outlook  semplice ed efficace ma ha un grosso limite: non  possibile aggiungere dati ad un database
creato in precedenza.

Se si desidera esportare frequentemente i dati nel medesimo database,  possibile applicare una soluzione basata sull'uso di codice VBA (Visual Basic for
Applications).

Per esportare l'archivio di posta usando la procedura offerta da Outlook,  sufficiente fare riferimento all'apposito "wizard", accessibile facendo riferimento
alla funzione Importa/Esporta del men File.

Si dovr semplicemente scegliere l'esportazione dei dati in formato Access, selezionare la cartella desiderata e premere il pulsante "Avanti".

Utilizzando del codice VBA, l'utente ha la possibilit di automatizzare l'intera procedura di esportazione da Outlook verso una base dati Access. Premendo
la combinazione di tasti ALT pi F11 da Microsoft Outlook si avr accesso all'Editor Visual Basic (VBE).

Dal men Inserisci, va selezionata la voce "Modulo" quindi si pu procedere all'inserimento del seguente codice:

Sub EsportaPosta()
Dim ns As Outlook.NameSpace
Dim objFolder As Outlook.MAPIFolder
Set ns= GetNamespace("MAPI")
Set objFolder= ns.PickFolder
Dim adoConn As ADODB.Connection
Dim adoRS As ADODB.Recordset
Dim intCounter As Integer
Set adoConn= CreateObject("ADODB.Connection")
Set adoRS= CreateObject("ADODB.Recordset")
adoConn.Open "DSN=DatiOutlook;"
adoRS.Open "SELECT * FROM email", adoConn, adOpenDynamic, adLockOptimistic
For intCounter= objFolder.Items.Count To 1 Step -1
With objFolder.Items(intCounter)
if .Class= olMail Then
adoRS.AddNew adoRS("Subject")= .Subject
adoRS("Body")= .Body
adoRS("FromName")= .SenderName
adoRS("ToName")= .To
adoRS("FromAddress")= .SenderEmailAddress
adoRS("FromType")= .SenderEmailType
adoRS("CCName")= .CC
adoRS("BCCName")= .BCC
adoRS("Importance")= .Importance
adoRS("Sensitivity")= .Sensitivity
adoRS.Update
End If
End With
Next
adoRS.Close
Set adoRS= Nothing
Set adoConn= Nothing
Set ns= Nothing
Set objFolder= Nothing
End Sub

Prima di eseguire la macro appena creata,  indispensabile in questo caso creare il database Access sul quale si andr a memorizzare i dati esportati da
Outlook.

E' possibile, a tal proposito, servirsi di quello che pu essere creato sfruttando la procedura passo-passo integrata in Outlook. Si pu comunque impiegare,
come base dati per la memorizzazione delle e-mail esportate da Outlook, anche un database gi esistente:  sufficiente creare una tabella denominata "email"
con i vari campi richiesti (Subject, Body, FromName, ToName, FromAddress).

Tutti i campi sono di tipo testo tranne "Body" che deve essere necessariamente impostato come campo "memo". I nomi dei campi ricalcano quelli impiegati
dal wizard di Outlook, purtuttavia possono essere liberamente modificati.

Il codice utilizza una connessione DSN (driver ODBC) per "dialogare" con la base dati Access. E' comunque possibile utilizzare altre stringhe di connessione.

Se si usa una connessione DSN,  necessario accedere alla finestra "Strumenti di amministrazione" di Windows, quindi, fare doppio clic sull'icona "Origine
dati (ODBC)".

Nella finestra "DNS utente"  necessario selezionare "MS Access Database", quindi, cliccare su "Aggiungi".

Nella schermata successiva, va scelto "Microsoft Access Driver (*.mdb)", quindi, cliccare sul pulsante "Fine".

Nella finestra "Configurazione ODBC per Microsoft Access", attribuire al DSN il nome "DatiOutlook". Cliccando il pulsante "Seleziona", si dovr indicare
il database Access da utilizzare.

Dopo aver creato il DSN, si potr eseguire la macro da Outlook accedendo al men Strumenti, Macro.

A questo punto, si deve selezionare la macro "EsportaPosta" e premere il pulsante Esegui.

Info prelevate da: 
http://www.ilsoftware.it/articoli.asp?ID=3818
