Newsgroup: it.comp.appl.access
Titolo: Outolook 2010

Buongiorno a tutti,
c'è un modo per importare da outlook 2010 in access la mail corrente?
 
Grazie
 
Alfio

 c'è un modo per importare da outlook 2010 in access la mail corrente?
 
Ho trovato e sto adattando questo codice che lancio con outlook:
 
Public Sub ArchiviaMail()
    Dim Db As DAO.Database
    Dim Posta As DAO.Recordset
    Dim Progr As String
    Progr = "C:\Users\Alfio\RMA.accdb"
    Set Db = OpenDatabase(Progr, False, False)
    Set Posta = Db.OpenRecordset("<T_Mail>", dbOpenDynaset)
    For x = 1 To myOlSel.Count
               Set mymail = myOlSel.Item(x)
                ' prendo i dati del x-simo msg selezionato
                Data = CDate(mymail.ReceivedTime)
                mittente = Left(mymail.SenderName, MAXLEN)
                destinatario = Left(mymail.To, MAXLEN)
                oggetto = Left(mymail.Subject, MAXLEN)
                CC = Left(mymail.CC, MAXLEN)
                MsgTesto = Left(mymail.Body, MAXLENMEMO) & "<"
                ' appendo il record nella tbl
                Posta.AddNew
                Posta!dcom = Data
                Posta!mittente = mittente
                Posta!destinatario = destinatario
                Posta!CC = CC
                Posta!oggetto = oggetto
                Posta!TipoComunicazione = "email"
                Posta!descri = MsgTesto
                Posta!comricevuta = ricevuta
                Posta!EmailImportata = True
                Posta!EmailEntryID = EntryID
                Posta.Update
    Next x
    Posta.Close
    Db.Close
    Set Db = Nothing
    Set Posta = Nothing
End Sub
 
Appena lo lancio e quando tenta di aprire il database ottengo questo errore:
 
Errore di run-time 3343
Unrecognized database format
 
Outlook è il 2010 e anche access, perché non lo riconosce?
 
Alfio

Scusa ma da dove lanci quel codice... 
Credo tu lo esegua dallo stesso File(ACCDB o MDB) in cui devi importare il messaggio di MSO... o sbaglio...?
Se così fosse, spero Bene, perché apri un database in cui sei già dentro...?
Quindi quel:
 
Set DB=OpenDatabase(...)
 
Prova a cambiarlo con:
 
Set DB=CurretDb
 
@Alex 

Ho capito ora che quel codice si lancia da MSO... spero bene tu ci ripensi io non andrei MAI a scrivere codice in MSO sapendo che poi interagisco con Access...
Quindi fai il contrario, latebinding sull'oggetto MSO ed accedi al modello oggetti... il codice è già scritto.
 
Valuta anche Exchange che ti consente di linkare direttamente MSO.

 Valuta anche Exchange che ti consente di linkare direttamente MSO.
 
Ciao Alex@,
si da MSO. Provo a fare come da te consigliato.
 
Grazie
 
Alfio

 
 
Però non è molto comodo prima posizionarsi sulla mail che si desidera per poi tornare in access... Non trovi?
 
Alfio

 Alfio
 
Hai perfettamente ragione... penso solo che questa modifica CLIENT-SIDE(in questo caso il Client di MSO)... è fissa e vincolata al PC in cui è installata...
Cambiano PC devi ricordarti di andare a ricreare la MACRO in MSO... 
 
Oggettivamente da pensarci...
 
@Alex

 @Alex
 
Anche questo è vero, ma posso risolvere inserendo la macro in tutti i pc.
Pertanto resta il problema dell'errore iniziale. 
 
Alfio

Ciao Alfio, si scusa avevo perso il principio.
L'errore esce in quanto da MSO, non hai istanziato l'Oggetto(Server) di Automazione.
In sostanza il metodo OpenDatabase è di DAO, quindi hai 2 Opzioni:
1° EarlyBinding abilita i RIFERIMENTI a DAO in MSO
2° LateBinding istanzia DAO con CrateObject e da li poi sull'oggetto usi il metodo...
 
 Dim mDAO As Object
 Set mDAO=CreateObject("DAO.DBEngine.120")
 Set db = dbe.OpenDatabase(NomeFile)
 ecc...
 
Verifica se quel riferimento a DAO è corretto per ACEDAO non uso molto questo metodo lavorando solo internamente...
 
Altrimenti istanzia il SERVER di AUTOMAZIONE Access.Application... ma apre anche il CLIENT... e non è mai una bellissima idea...
 
@Alex
 
@Alex

  
 
Ciao @Alex
scusa se ti rompo ancora ma nell'intento di capire meglio l'automazione OLE su un db vergine ho eseguito questo codice prelevato da mamma microsoft:
 
    Dim myOlExp As Outlook.Explorer
    Dim myOlSel As Outlook.Selection
    Dim MsgTxt As String
    Dim x As Integer
 
    MsgTxt = "Elementi selezionati: "
    Set myOlExp = Application.ActiveExplorer
    Set myOlSel = myOlExp.Selection
    For x = 1 To myOlSel.Count
        MsgTxt = MsgTxt & myOlSel.Item(x).SenderName & ";"
    Next x
    MsgBox MsgTxt
 
nei riferimenti dopo Microsoft Access 14.0 Object Library ho Microsoft Outlook 14.0 Object Library.
 
L'errore che continua a tormentarmi è sempre lo stesso 
"Impossibile trovare il metodo o il membro dei dati." alla riga
 
 Set myOlExp = Application.ActiveExplorer
 
Perchè?
 
Alfio
 

 Alfio
 
ALFIO, se non spieghi che strada prendi non ci capiamo e perdiamo un sacco di tempo.
Sei in MSO...?
In questo caso perchè hai prima le LIB di MSAccess...? La priorità è IMPORTANTE
Poi sempre se sei in MSO spalmi oggetti in quel modo...?
 
CopiaIncollato nel mio MSO funziona senza alcun ERRORE...
 
@Alex

 @Alex
 
Da Access...


Provata adesso su MSO e funziona. Vorrei solo capire perchè lato MSA mi restituisce quell'errore.
 
Grazie
 
Alfio

Perché non hai recuperato l'istanza di MSO ma aperto un MSO VUOTO.
Devi recuperare l'istanza con GetObject passando il Classname del Server di Automazione di MSO...
 
Mi pare tu stia facendo tentativi un poco casuali... o sbaglio...?
 
@Alex


No, sto cercando di capire meglio il funzionamento. Purtroppo quando prendi un codice bello pronto non impari bene. Pertanto sto abbandonando il codice pronto e voglio fare quello che mi occorre con la mia testa. Tutto qui.
 
Grazie @Alex, per la tua perpetua disponibilità.
 
Alfio