Sincronizzazione access con outlook

di il
1 risposte

Sincronizzazione access con outlook

Salve e buona giornata a tutti. Sto realizzando un software per la gestione delle prenotazioni per conto di un Tour Operator e avevo in mente una cosa che non so se è realizzabile. Vado al punto.
Ho scritto il seguente codice che mi crea una tabella e mi importa le email da outlook ma sono funziona come vorrei (ecco che chiedo aiuto a voi esperti)

1) Mi appare sempre la scheda allegata che mi chiede quale cartella selezionare, ma io la vorrei definire nel codice così da non chiederlo più
2) Ogni volta che esegue il codice, mi ricopia nuovamente oltre che le nuove email anche le vecchie, mentre io vorrei solo un aggiornamento (praticamente ho n copia quante n volte eseguo il codice)
3) Una volta che importa l'email su outlook risulta letto

Secondo voi c'è soluzione?
Grazie sempre per il Vs aiuto

Private Sub ImportMails_Click()
On Error Resume Next

Dim strAttachment As String
Dim strSQL As String
Dim rsMail As DAO.Recordset
Dim tdf As DAO.TableDef

Dim Ol_App As New Outlook.Application
Dim Ol_MAPI As Outlook.NameSpace
Dim Ol_Folder As Outlook.MAPIFolder
Dim Ol_Items As Outlook.MailItem
Dim Ol_Attach As Outlook.Attachment

Set tdf = CurrentDb.TableDefs("TblMails")

If tdf Is Nothing Then
strSQL = "CREATE TABLE TblMails (" & _
"CreationTime DATE," & _
"SenderName CHAR(50)," & _
"SenderAddress CHAR(50)," & _
"UnRead YESNO," & _
"Subject CHAR(255)," & _
"Body MEMO," & _
"Attachments CHAR(255));"
CurrentDb.Execute strSQL
End If

Set rsMail = CurrentDb.OpenRecordset("TblMails")
Set Ol_MAPI = Ol_App.GetNamespace("MAPI")
Set Ol_Folder = Ol_MAPI.PickFolder

For Each Ol_Items In Ol_Folder.Items

For Each Ol_Attach In Ol_Items.Attachments
strAttachment = strAttachment & Ol_Attach.DisplayName & vbCrLf
Next Ol_Attach

With rsMail
.AddNew
.Fields("CreationTime") = Ol_Items.CreationTime
.Fields("SenderName") = Ol_Items.SenderName
.Fields("SenderAddress") = Ol_Items.Reply.Recipients.Item(1).Address
.Fields("Subject") = Ol_Items.Subject
.Fields("Body") = Ol_Items.Body
.Fields("UnRead") = Ol_Items.UnRead
.Fields("Attachments") = strAttachment
.Update
End With
strAttachment = ""
Next Ol_Items

rsMail.Close
MsgBox "L'email è stata importata"

Set rsMail = Nothing
Set tdf = Nothing

Set Ol_Attach = Nothing
Set Ol_Items = Nothing
Set Ol_Folder = Nothing
Set Ol_MAPI = Nothing
Set Ol_App = Nothing
End Sub
Allegati:
17081_7a84cd8f70ed084bf1acd474038122dc.png
17081_7a84cd8f70ed084bf1acd474038122dc.png

1 Risposte

  • Re: Sincronizzazione access con outlook

    vincoll ha scritto:


    ...
    1) Mi appare sempre la scheda allegata che mi chiede quale cartella selezionare, ma io la vorrei definire nel codice così da non chiederlo più
    modifica questa riga
    Set Ol_Folder = Ol_MAPI.PickFolder
    Parti da qui per vedere come è strutturata la collection Folders di NameSpace. Occhio che "in arrivo" potrebbe essere "inbox". Metti un punto di interruzione nel codice e nella finestra immediata guarda gli oggetti Folder.

    vincoll ha scritto:


    2) Ogni volta che esegue il codice, mi ricopia nuovamente oltre che le nuove email anche le vecchie, mentre io vorrei solo un aggiornamento (praticamente ho n copia quante n volte eseguo il codice)
    3) Una volta che importa l'email su outlook risulta letto
    ...
    La 3) potrebbe risolverti la 2) nel senso che una volta esaminato il messaggio potresti modificarne la proprietà da "da leggere" a "letto" e impostare una condizione If in modo che importi solo i messaggi "da leggere".
    Mi documento un po' e posto qualche link.
    Ecco qua la proprietà prima da verificare e poi da modificare.
Devi accedere o registrarti per scrivere nel forum
1 risposte