Allegati da Outlook



  • Allegati da Outlook di SouthWind data: 16/11/2016 09:52:19

    Ciao.
    Ho un quesito che potrebbe essere interessante per altri.
    Non sono certo che questa sia la sezione giusta per la richiesta, eventualmente chiedo la cortesia di essere re-indirizzato.
    Ho un file excel che viene elaborato quotidianamente attraverso l'esecuzione di una macro.
    L'elaborazione nasce da un file excel ricevuto in allegato in posta elettronica.
    Attualmente salvo l'allegato, copio il contenuto nel file excel da elaborare, lancio la macro ed ottengo così il report quotidiano.
    Qualcuno ha già avuto modo di automatizzare il processo?
    Almeno nella parte iniziale, ovvero nell'estrazione automatica del file allegato e nel suo posizionamento in locale sul pc.
    Ho Outlook 2013 e, in generale tutta la piattaforma Office 2013.
    Grazie mille.


  • di Luca73 data: 18/11/2016 11:21:50

    Ciao
    Penso che si possa abbozzare qualcosa.
    Tu come te la cavi con VBA?


  • di SouthWind data: 18/11/2016 12:20:41

    Sono alle prime armi purtroppo...
    un pò scopiazzo qua e là dai vari post, un pò registro macro automaticamente da excel, alla fine qualcosina combino.
    Grazie.


  • di Luca73 data: 21/11/2016 14:22:58

    Cominciamo con un primo pezzo
    La sub qui sotto riportata salva gli attachment della mail selezionata in outlook in una cartella selezionabile. (quindi la selezione, non l'apertura della mail stessa va fatta prima di lanciare la macro).

    Prova a vedere cosa ne capisci (utilizza l'help sia di excel che di outlook)

    Poi prova a vedere di aggiungere gli altri pezzetti del codice che ti servono per
    - aprire il file copiato
    - selezionare il foglio
    - selezionare l'intervallo
    - copiarlo nel file di elaborazione
    - elaborare
    - chiudere i file

    nel mentre se hai bisogno .... siamo qui

    Cioa
     
    Sub SalvaAttachMailCorrente()
    Dim OKName As Boolean
    Dim NomeFolgi
    Dim Stringa As String
    Dim Exten As String
    Dim myOlSel
    Dim outapp
    Dim Allegati
    
    Set outapp = CreateObject("Outlook.application")
    Set myOlSel = outapp.ActiveExplorer.Selection
    If myOlSel.Count = 1 Then
        
        If myOlSel.Item(1).Attachments.Count = 0 Then
            MsgBox "il file non Ha allegati"
            Exit Sub
        Else
            For Allegati = 1 To myOlSel.Item(1).Attachments.Count
                Stringa = myOlSel.Item(1).Attachments.Item(Allegati).Filename
                'Exten = Right(Stringa, 3)
                'Stringa = Left(Stringa, Len(Stringa) - 4)
                Stringa = Application.GetSaveAsFilename(Stringa)
                Stringa = Stringa
                myOlSel.Item(1).Attachments.Item(Allegati).SaveAsFile Stringa
            Next
        End If
    Else
        MsgBox "Selezione errata (nessun oggetto selezionato o selezione maggiore di 1)"
    End If
    Set outapp = Nothing
    Set myOlSel = Nothing
    
    End Sub


  • di SouthWind data: 21/11/2016 15:09:43

    Grazie Luca.

    Provo a chiarire meglio il requisito.

    Sicuramente la mail che mi interessa ha sempre uno ed un solo allegato.
    Pertanto ho eliminato tutta la gestione dei casi diversi.

    Vorrei anche che, per dire, ad una certa ora automaticamente partisse la procedura in modo da trovarmi in un determinato path del mio pc il file allegato.
    Ma questo è un NtH, posso per i primi tempi lanciare la macro a mano.

    Tanto premesso, la macro si pianta sull'istruzione:

    Stringa = Application.GetSaveAsFilename(Stringa)

    E' probabile che avrei dovuto fare qualcosa oltre al semplice cut&past del tuo codice ed all'eliminazione dei casi "anomali".
    Per esempio dove indico il path al quale trovare il file allegato?

    Intanto ti ringrazio, abbi pazienza.
    Ciao.


  • di Luca73 data: 21/11/2016 15:42:27

    cIAO
    PER FAR PARTIRE UNA MACRO AD UNA CERTA ORA TUTI I GIORNI PUOI USARE il comando on time da mettere in Workbook open (non in un modulo) vedi esempio sotto.

    Per Modificare la macro ti consiglio di allegare la macro da te modificata assieme a tutto il file (senza dati sensibili) e inoltre quando dici che si pianta spiega quale errore ti da il programma.

    Al posto di GetSaveAsFilename(Stringa) puoi inserire direttamente il path del percorso.

    Ciao
    Luca
     
     Private Sub Workbook_Open()
    Application.OnTime TimeValue("17:00:00"), "my_Procedure"
    End Sub


  • di SouthWind data: 21/11/2016 16:00:18

    L'errore che mi restituisce in una msgbox quando lancio la macro è:
    Errore di run-time '438':
    Proprietà o metodo non supportati dall'oggetto.
    L'istruzione è:
    Stringa = Application.GetSaveAsFilename(Stringa)
    Stringa contiene effettivamente il nome del file allegato che io voglio venga salvato in automatico sul mio pc.
    Non allego il file in quanto l'esigenza è totalmente indipendente dal contenuto; voglio dire basta un file con 1 colonna ed 1 riga con "PIPPO" nella cella A1.
    Grazie ancora.
     
    Sub SalvaAttachMailCorrente()
    
    Dim OKName As Boolean
    
    Dim Stringa As String
    
    Dim myOlSel
    
    Dim outapp
    
    Dim Allegati
    
    Set outapp = CreateObject("Outlook.application")
    
    Set myOlSel = outapp.ActiveExplorer.Selection
    
    If myOlSel.Count = 1 Then
        
            For Allegati = 1 To myOlSel.Item(1).Attachments.Count
                Stringa = myOlSel.Item(1).Attachments.Item(Allegati).FileName
                Stringa = Application.GetSaveAsFilename(Stringa)
                Stringa = Stringa
                myOlSel.Item(1).Attachments.Item(Allegati).SaveAsFile Stringa
            Next
    End If
    
    Set outapp = Nothing
    Set myOlSel = Nothing
    
    End Sub


  • di Luca73 data: 21/11/2016 16:56:14

    Che versione hai di excel?
    Prova a vedere se nel tuo help la funzione GetSaveAsFilename.
    altrimenti se il path è sempre il solito puoi

     
    Stringa = myOlSel.Item(1).Attachments.Item(Allegati).FileName
    myOlSel.Item(1).Attachments.Item(Allegati).SaveAsFile path & Stringa
    
    


  • di SouthWind (utente non iscritto) data: 21/11/2016 18:25:06

    Ok Luca.
    Ora la procedura non si blocca più.
    Però non trovo il file al path che ho indicato.
    Sicuramente ho omesso qualcosa.

    Stringa = myOlSel.Item(1).Attachments.Item(Allegati).FileName
    myOlSel.Item(1).Attachments.Item(Allegati).SaveAsFile path & Stringa

    Al posto di "path" ho inserito C:ALLEGATI.
    Scusa se ti chiedo di essere scolastico ma nel codice che mi hai dato c'è qualcosa da valorizzare?
    Inoltre puoi commentare le varie istruzioni in modo che possa capire cosa fanno esattamente?
    Ti ringrazio.


  • di Luca73 data: 22/11/2016 08:57:11

    Ciao Secondo me nel path manca lo slash finale.
    La e commerciale (&) null'altro fa che concatenare stringhe se ù
    path & Stringa con path = C:ALLEGATI assumendo che il file si chiamasse nomefile.ext
    ti crea C:ALLEGATInomefile.ext che poi dato in pasto a myOlSel.Item(1).Attachments.Item(Allegati).SaveAsFile

    salva il file in C: chiamandolo ALLEGATInomefile.ext

    Fammi sapere come procede.
    Ciao
    Luca
     
    Sub SalvaAttachMailCorrente3()
    
    ' in questa parte qui sotto vengono dichiarate le variabile
    ' quelle senza la parte as XXXX sono object
    Dim Stringa As String
    Dim myOlSel
    Dim outapp
    Dim Allegati
    Dim Miopath As String
    
    
    Set outapp = CreateObject("Outlook.application")
    'assegno alla variabile outapp l'oggetto di outlook
    Set myOlSel = outapp.ActiveExplorer.Selection
    'assegno alla variabile myOlSel la selezione corrente di outlook
    
    If myOlSel.Count = 1 Then
    'l'istruzione serve per verificare se ho selezionato solo una mail
            For Allegati = 1 To myOlSel.Item(1).Attachments.Count
            'i cicli For fanno eseguire tutte le istruzione fino a next un certo numero di volte
            ' ne nostro caso eseguo da 1 fino al numero di allegati myOlSel.Item(1).Attachments.Count
            ' myOlSel.Item(1).Attachments.Count è il numero (count) di allaegati (attachments) del primo elemento (Item(1)) della selezione corrente
                Stringa = myOlSel.Item(1).Attachments.Item(Allegati).Filename
                ' assegno a stringa il nome del file in allegato
                Miopath = "C:ALLEGATI"
                ' assegno a Miopath il nome costante della directory
                myOlSel.Item(1).Attachments.Item(Allegati).SaveAsFile Miopath & Stringa
                ' salvo l'allegato
            Next
            'finisco il ciclo for
    End If
    'finisco l'if
    Set outapp = Nothing
    'annulla l'attribuazione alla variabile
    Set myOlSel = Nothing
    'annulla l'attribuazione alla variabile
    End Sub
    


  • di mb data: 22/11/2016 09:55:05

    Complimenti a SouthWind per l'argomento e a Luca73 per la proposta di soluzione

    chiedo però un chiarimento per capire meglio il funzionamento e rendere utilizzabile questa procedura molto interessante anche per la gestione giornaliera dei dati serali che arrivano dai negozi

    Mi sfugge un passaggio.... l'ulltimo file funziona perfettamente ma mi sembra che richieda, come indicato in qualche post precedente la preventiva selezione delle mail in arrivo e poi su può procedere con il lancio della sub... o mi sfugge qualcosa ??

    Grazie e scusate il disturbo....



  • di SouthWind data: 22/11/2016 10:00:51

    No, vabbè, sono emozionato fino alle lacrime... funziona!
    Ti riporto il codice "allegerito" in seguito all'adeguamento alle mie esigenze.
    Il ciclo For Next potrebbe essere rimosso, ho sempre 1 solo allegato.
    Non seleziono mai più di una mail (poi magari vediamo come fare in modo di automatizzare il processo così che io eviti la selezione).
    Dato che la mail che mi arriva è quotidiana ed il nome dell'allegato è sempre lo stesso a meno della presenza della data del giorno di arrivo meno 1 giorno (fa riferimento ad un report prodotto il giorno prima), ora provo a cancellare l'allegato conservato in Miopath così da evitare un'inutile proliferazione di allegati - a me serve sempre l'ultimo che arriva).
    Prossimi passi:
    1) copiare (o spostare) il contenuto dell'unico foglio del file allegato e scaricato in Miopath in un foglio di un altro file excel
    2) eseguire la macro già presente (da me brillantemente realizzata in precedenza.
    Infine attraverso un crono (o ad evento, cioè quando arriva la mail) eseguire l'intero processo in automatico.
    In ogni caso, caro Luca, grazie mille, sei stato davvero prezioso... excelvba for dummies come me!
    Buona giornata.
    Alberto.
     
    Sub SalvaAttachMailCorrente3()
    
    Dim Stringa As String
    Dim myOlSel
    Dim outapp
    Dim Allegati
    Dim Miopath As String
    
    Set outapp = CreateObject("Outlook.application")
    Set myOlSel = outapp.ActiveExplorer.Selection
    
    For Allegati = 1 To myOlSel.Item(1).Attachments.Count
                Stringa = myOlSel.Item(1).Attachments.Item(Allegati).FileName
                Miopath = "C:ALLEGATI"
                myOlSel.Item(1).Attachments.Item(Allegati).SaveAsFile Miopath & Stringa
    Next
    End Sub


  • di mb data: 22/11/2016 10:14:07

    Opphs
    mi sa che sono rimasto spiazzato dall'ultima risposta.

    a questo punto chiedo consiglio è meglio aprire una nuova discussione visto che mi sembra che questa sia arrivata alla conclusione ....


    questa soluzione è molto utile ma vorrei proseguire con un'integrazione

    le mail arrivano da n negozi vengono spostate in cartella Outlook incassi
    a questo punto mi piacerebbe copiarli all'interno di C:incassi del mio pc
    ma la procedura precedente, se non ho capito male, richiede la selezione delle mail in arrivo dai negozi prima di lanciare la sub
    attendo vostre info

    Grazie


  • di Luca73 data: 22/11/2016 13:37:32

    Ciao
    @ mb: apri un altra discussione.

    @ SouthWind
    io procederei così:
    la macro che abbiamo sviluppato io la copierei nel file con la macro che tu hai generato.

    La modificherei aggiungendo le seguenti istruzioni:
    1) aprire il file che hai salvato (workbook.open)
    2) copiare il range che ti serve dal file appena aperto
    3) incollare i dati sul nuovo file
    4) richiamare la macro gia scritta

    Provaci e poi correggiamo in corsa.
    Ciao
    Luca


  • di SouthWind data: 04/01/2017 11:07:43

    Ciao e buon 2017 a tutti.
    Riprendo questa discussione perchè vorrei implementare il codice per soddisfare alcune nuove esigenze.
    In particolare vorrei:
    1) salvare il file excel allegato ad una mail che arriva quotidianamente SENZA dover aprire la mail (chiarisco subito che la mail arriva sempre, è perfettamente identifcabile e contiene sempre uno ed un solo allegato excel)
    2) evitare di confermare la chiusura del file allegato quando il sistema risponde che gli appunti contengono molti dati etc. etc. (di fatto la macro che abbiamo redatto insieme copia il contenuto del file in allegato in un altro file e, a quel punto, il file in allegato non mi occorre più - quindi lo chiudo).
    3) cancellare il file scaricato dalla posta in una directory di lavoro come ultimo step di esecuzione della macro.
    Non so se le mie esigenze possano essere soddisfatte, a giudicare dai suggerimenti ricevuti da Patel, Luca ed Alfredo (spero di non dimenticare nessuno) mi trovo nel posto giusto per provarci.
    Grazie.
    Alberto


  • di Luca73 data: 04/01/2017 11:27:44

    Ciao Non sono un esperto di Outlook comandato da Excel ma possiamo assieme giungere ad una soluzione.
    Cominciamo dall'inizio. dove trovo la mail in outlook?
    Come identifico la mail in outlook (tu dice che è perfettamente identificabile?)

    Ciao
    Luca


  • di SouthWind data: 04/01/2017 11:47:06

    Ciao Luca, bentrovato.
    Tu stesso mi hai fornito buona parte del codice, in particolare quella necessaria per estrarre e salvare sul pc l'allegato (vedi scambi in cronologia nella discussione, il 22 novembre u.s.).
    Andando per gradi, in sintesi a me occorre evitare di aprire la email che contiene l'allegato.
    Grazie.


  • di Luca73 data: 04/01/2017 11:58:12

    Ciao
    Se vuoi un aiuto devi aiutarci ad aiutarti.
    Innanzitutto leggi le domade che ti facciamo e rispondi il più dettagliatamente possibile.

    Ripeto:
    Dove trovo la mail in outlook?
    Nell'inbox, in una cartella dedicata, ci sono altre mail assime....
    Come identifico la mail in outlook (tu dice che è perfettamente identificabile?) dal nome, dall'oggetto, come la identifico dalle altre presenti nella stessa cartella?


    Ciao
    Luca


  • di SouthWind data: 04/01/2017 12:24:39

    OK Luca.
    Provo a rispondere sperando di aver compreso le domande (mi si perdonerà qualche generalizzazione/omissione dovuta alla riservatezza dei dati).

    Dove trovo la mail in outlook?
    -- la email si trova in una cartella dedicata della posta in arrivo; in dettaglio la cartella si chiama "Elaborazioni XXX", la email proviene sempre dallo stesso mittente "sistema_XXX@SOCIETA.it", ha sempre lo stesso oggetto a meno della variazione della data del giorno di arrivo "Report di Produzione 04/01/2017" (domattina troverò "Report di Produzione 05/01/2017"), ed ha in allegato sempre un solo file excel "ProductionReport.xls" composto da un solo foglio "Production".
    Come identifico la mail in outlook (tu dice che è perfettamente identificabile?) dal nome, dall'oggetto,
    --- vedi risposta punto precedente
    Come la identifico dalle altre presenti nella stessa cartella?
    --- vedi risposta punto precedente, comunque nella stessa cartella c'è un'altra email che si differenzia dall'altra per l'oggetto e dall'allegato. Anche per questa email dovrò mettere in piedi la stessa procedura, immagino di poter clonare quanto fatto per la email citata dettagliatamente.

    Si consideri che, oggi, grazie anche a te Luca, per prelevare in automatico la email è necessario aprire la email (è quello che voglio evitare).

    Spero di essere stato esaustivo e mi scuso per lo scarso dettaglio della richiesta.
    Grazie, Alberto.
    Ciao
    Luca


  • di Luca73 data: 04/01/2017 12:55:48

    OK
    per ore ci sono
    altre domande:
    la mail ti arriva ogni giorno? O solo alcuni?
    La mail la "analizzi" ogni giorno oppure ci sono casi in cui devi analizzare anche mail dei giorni passati?Ogni giorno tu analizzi la mail del giorno (ovvero oggi 4 gennaio analizzi "Report di Produzione 04/01/2017") oppure quella del giorno prima (ovvero oggi 4 gennaio analizzi "Report di Produzione 03/01/2017")

    Ciao
    Luca



  • di Luca73 data: 04/01/2017 13:40:42

    Ciao
    prima parte del programma
    con queste righe identifichi la mail (oggetto con data di oggi) e lo salvi in una directory.
    1) aggiorna il path dove vuoi salvare
    2) aggiorna la riga Outapp.session.Folders("aaaaaa.bbbbb@xxxxxx.com").Folders("Inbox").Folders("Prova")
    Per Sapere cosa scrivere selezioni la cartella outlook dove salvi la mail guardi nelle proprietà in "generale" trovi il percorso. Per ogni sezione metti un .folders e poi aggiungi un .folders per la cartella selezionata
    nel caso in questione ho selezionato la cartella Prova e il percorso era \aaaaaa.bbbbb@xxxxxx.comInbox

    Poi prova ad unire i vari pezzi e vedi se riesci ad andare avanti.

    Ciao
    Luca

     
    Sub SalvaAttachMailCorrente4()
    
    Dim Stringa As String
    Dim Outapp
    Dim myOlFolders
    Dim MyFolder
    Dim MyMail
    
    Dim MioPath As String
    
    MioPath = "C:UsersXXXXXYYYYYYMiaDir"
    
    Set Outapp = CreateObject("Outlook.application")
    Set myOlFolders = Outapp.session.Folders
    Set MyFolder = Outapp.session.Folders("aaaaaa.bbbbb@xxxxxx.com").Folders("Inbox").Folders("Prova")
    For Each MyMail In MyFolder.items
        If TypeName(MyMail) = "MailItem" Then
            Stringa = MyMail.Subject
            Stringa = Right(Stringa, 10)
            If Right(Stringa, 10) = Format(Date, "dd/mm/yyyy") Then
                With MyMail.Attachments.Item(1)
                    .SaveAsFile MioPath & .DisplayName
                End With
            Else
            End If
        Else
        End If
    Next
    End Sub
    


  • di mb data: 04/01/2017 14:30:31

    Complimenti Luca, vado ad aggiungerla alle altre versioni molto interessante



  • di Luca73 data: 04/01/2017 15:43:55

    Per Cancellare un file puoi o usare Kill (vedi help) il nome ce l'hai in quanto lo avrai aperto e chiuso prima.
    Oppure un qualcosa tipo vedi sotto:

     
    Set fs = CreateObject("Scripting.FileSystemObject")
    FileMio= fs.GetFile(percorsofile)
    FileMio.Delete


  • di SouthWind data: 04/01/2017 16:40:42

    Grazie Luca.

    L'esecuzione del comando KILL mi è impedita.
    La risposta è che non detengo i diritti per poterlo fare (???? sono admin della mia macchina... boh).
    Domani eseguo il codice che mi hai postato.

    Grazie ancora.
    Alberto.


  • di SouthWind data: 04/01/2017 16:50:06

    Mi sono accorto che dovevo delle risposte.

    la mail ti arriva ogni giorno? O solo alcuni?
    --- quotidiana (è frutto di una batch notturna, non distingue feste, sabato, etc.)
    La mail la "analizzi" ogni giorno oppure ci sono casi in cui devi analizzare anche mail dei giorni passati?
    --- dipende. ai miei fini non ha importanza in quanto l'allegato è di tipo "incrementale", nel senso che contiene dati a partire dal 1 gennaio dell'anno in corso (quindi se "salto" delle giornate sono certo che alla prossima analisi recupero anche il pregresso)
    Ogni giorno tu analizzi la mail del giorno (ovvero oggi 4 gennaio analizzi "Report di Produzione 04/01/2017") oppure quella del giorno prima (ovvero oggi 4 gennaio analizzi "Report di Produzione 03/01/2017")
    --- la mail del giorno ma, per i motivi di cui al precedente punto, immagino sia irrilevante (almeno ai miei fini).

    Un'ultima cosa: ti chiedo la cortesia di commentare il codice in modo che possa comprendere ed imparare i vari passaggi e non beneficiarne passivamente.

    Grazie mille.
    Alberto.


  • di Luca73 data: 05/01/2017 09:06:43

    Il Codice Che ti Avevo postato è molto semplice comunque qui sotto è commentato.
    TI consiglio di fare grande uso dell'help

    Bisogna aggiungere alla fine della macro la distruzione degli oggetti definiti con una riga tipo
    Set Outapp =nothng
    Set myOlFolders = nothing
    Set MyFolder = nothing
     
    Sub SalvaAttachMailCorrente4()
    ' definizione delle Variabili
    Dim Stringa As String
    Dim Outapp
    Dim myOlFolders
    Dim MyFolder
    Dim MyMail
    Dim MioPath As String
    
    'Definisco la variabile del percorso dove salvare il file
    MioPath = "C:UsersXXXXXYYYYYYMiaDir"
    
    ' creo la variabile che mi connette ad outlook
    Set Outapp = CreateObject("Outlook.application")
    
    'definisco una variabile che contiene tutte le cartelle della sessione di outlook
    Set myOlFolders = Outapp.session.Folders
    
    'definisco la cartella in cui voglio lavorare io non ho trovato metodo più dsemplice ma forse esiste...
    Set MyFolder = Outapp.session.Folders("aaaaaa.bbbbb@xxxxxx.com").Folders("Inbox").Folders("Prova")
    
    'il Ciclo qui sotto passa in rassegna tutti gli elementi che sono nella cartella che ho selezionato
    For Each MyMail In MyFolder.items
    ' verifico che l'elemento sia una mail
        If TypeName(MyMail) = "MailItem" Then
    ' estraggo l'oggetto della mail
            Stringa = MyMail.Subject
    ' ne prendo gli ultimi dieci caratteri (equivalenti alla data gg/mm/dddd)
            Stringa = Right(Stringa, 10)
    'Confronto la stringa estratta con la data odierna formattata inmodod da essere coerente
            If Right(Stringa, 10) = Format(Date, "dd/mm/yyyy") Then
    'prendo il primo allegato (essendocene uno solo solo per certo che è qulello giusto
                With MyMail.Attachments.Item(1)
    'lo salvo in path con il nome che avev nella mail come allegato
                    .SaveAsFile MioPath & .DisplayName
                End With
    Qui sotto ho lasciato gli else nel caso tu volessi fare delle azioni se l'if non è vero.
            Else
            End If
        Else
        End If
    Next
    End Sub


  • di SouthWind data: 05/01/2017 10:47:47

    Buondì Luca.

    La procedura ha rilevato un errore alla riga:

    Set MyFolder = Outapp.session.Folders("sistema_XXX@societa.it").Folders("Posta in arrivo").Folders("Elaborazioni XXX")

    Il messaggio è:
    Errore di run-time '-2147221233 (8004010f)':
    Operazione non riuscita. Impossibile trovare un oggetto

    I parametri sono:
    "sistema_XXX@societa.it" è il mittente
    "Posta in arrivo" è la Inbox
    "Elaborazioni XXX" è la cartella della Inbox nella quale arriva la email.

    Ho combinato forse qualche cavolata?
    Grazie.


  • di Luca73 data: 05/01/2017 11:31:53

    Questa Domanda mi è difficile rispondere in quanto per risolvere nel mio caso ho fatto un po' di tentativi..
    allora ti suggerisco le seguenti possibilità:
    1) ri-verifica come ti avevo già suggerito con le proprietà della cartella outlook ( non è che ci siano altre cartelle o errori di battitura?) ma penso che questo l'hai già fatto.
    2) Prova a eseguire passo passo l'operazione
    Set MyFolder = Outapp.session.Folders("sistema_XXX@societa.it")
    poi MyFolder = Outapp.session.Folders("sistema_XXX@societa.it").Folders("Posta in arrivo")
    e guarda se ti dà errore
    Nel mentre prova ad inserire una espressione di controllo Outapp.session.Folders, e anche MyFolder e anche Outapp e cercare lì dentro i valori che ti servono.

    Verifica e prova un po per tentativi...dai che ci riesci...
    Io ieri ho fatto così.
    CIao
    Luca