';
pc-facile
Valutazione 4.87/ 5 (100.00%) 5838 voti




Login
Iscriviti
Cerca
Topic senza risposta
Topic attivi
Indice
Assistenza Software
Applicazioni Office Windows

RINOMINARE E SALVARE ALLEGATI MAIL OUTLOOK

Rispondi al post

Pagina 1 di 1


RINOMINARE E SALVARE ALLEGATI MAIL OUTLOOK
christianghz @ 12/12/17 21:04

Ciao a tutti.
ogni giorno ricevo via mail dai clienti 150-200 file excel da rielaborare, e spesso hanno lo stesso nome.

Ho bisogno di salvarli massivamente in automatico dalla mail in una cartella del PC(non con una regola, ma con input dell'operatore) per poi processarli tutti uno per uno. Volevo creare un'azione con pulsante rapido in alto che lancia un'azione o una macro, ma da quel che capisco non è possibile.

quando li salva, avndo spesso lo stesso nome, ho bisogno che li rinomini o con un numero casuale -per non creare doppioni- o con qualche riferimento specifico all'interno del file.

Conoscete un metodo o un'alternativa?

grazie

Re: RINOMINARE E SALVARE ALLEGATI MAIL OUTLOOK
Anthony47 @ 14/12/17 13:46

Si puo' fare, ma avrei bisogno di capire se si tratta di una sola mail con tanti allegati o di tante mail con un tot di allegati ciascuna.
Inoltre non mi e' chiaro se ogni giorno il percorso di salvataggio deve cambiare, o se sara' sempre lo stesso.
Infine, visto che parli di centinaia di file, hai bisogno di legare il nome del file in qualche modo al mittente della mail o questo legame e' inutile?

Ciao

Re: RINOMINARE E SALVARE ALLEGATI MAIL OUTLOOK
christianghz @ 14/12/17 14:14

Un centinaio di mail ogni giorno, da mittenti diversi, contenenti da 1 a 20 file excel.
Sarebbe utile salvare i file ogni giorno tutti insieme in una nuova cartella rinominata con la data del giorno, e sì, sarebbe utile se fossero rinominati con il nome del mittente, il giorno e il valore di una cella all'interno del file.

Re: RINOMINARE E SALVARE ALLEGATI MAIL OUTLOOK
Anthony47 @ 15/12/17 15:28

Confermo che "si puo' fare", ma in questo periodo sono a corto di tempo quindi devi portare pazienza.
Questa sarebbe una macro di Outlook, non vorrei aprire i file excel per andare a leggere il contenuto di una cella

Ciao

Re: RINOMINARE E SALVARE ALLEGATI MAIL OUTLOOK
christianghz @ 15/12/17 18:09

Ok va bene e grazie
Siccome i file all'interno di una stessa mail potrebbero chiamarsi alla stessa maniera direi di salvarli con indirizzo del mittente + nome file + numero di allegato, tipo.

Re: RINOMINARE E SALVARE ALLEGATI MAIL OUTLOOK
christianghz @ 15/12/17 18:10

Magari con un controllo per vedere se ho già salvato file di quel mittente a questo punto, obde evitare doppioni, ma non vorrei chiedere troppo.

Grazie ancora

Re: RINOMINARE E SALVARE ALLEGATI MAIL OUTLOOK
Anthony47 @ 10/01/18 02:36

Non mi ero dimenticato...

Cominciamo a mettere un paletto.
Domanda: Come si identifica quali mail sono da esaminare?
Risposta: le metti in un folder specifico (le puoi spostare a mano o tramite una regola di outlook)
La macro guarda in questo folder, e terminata la lavorazione (cioe' l'estrazione degli allegati) sposta i messaggi "di posta" in un altro folder. Messaggi non di posta (es relative al Calendario) non vengono spostati.
Esempio:
-le mail da processare sono in
Cartelle personali / Posta in arrivo /DaProcessare
-vengono poi spostate in
Cartelle personali / Posta in arrivo /Processate
(il folder "Processate" deve gia' esistere)

Possiamo quindi provare con quasta mail di Outlook:
Codice: Seleziona tutto
Sub WorkAll()
'Vedi http://www.pc-facile.com/forum/viewtopic.php?f=26&t=109180&p=641302#p641302
Dim daProc As MAPIFolder, Procd As MAPIFolder
Dim myNameSpace As NameSpace, myMex As MailItem, mMitt As String
Dim ZZsjAdd As String, ZZMailTxt As String, I As Long, BasePath As String, PS As String
Dim DayPath As String, J As Long, AttCnt As Long, mWAtt As Long, fCnt As Long, mTot As Long
Dim AName As String, mySplit, myTim As Single, eDel As Single, flXls As Boolean, mRes As Long
Dim mSender, noBB As String
'
Set myNameSpace = Application.GetNamespace("MAPI")
Set daProc = myNameSpace.Folders("Cartelle personali").Folders("Posta in arrivo").Folders("DaProcessare")   '<<<Folder di origine
Set Procd = myNameSpace.Folders("Cartelle personali").Folders("Posta in arrivo").Folders("Processate")      '<<< Folder si destinazione
BasePath = "C:\PROVA"                         '<<< La directory "base" in cui saranno salvati gli allegati
'
noBB = "<>:/\|?*" & Chr(34)
PS = "\"
DayPath = Format(Now, "yy-mm-dd")
If Right(BasePath, 1) <> PS Then BasePath = BasePath & PS
DayPath = BasePath & DayPath
If Dir(DayPath, vbDirectory) = "" Then MkDir (DayPath)
mTot = daProc.Items.Count
For J = daProc.Items.Count To 1 Step -1
'For Each myMex In daProc.Items
    Set myMex = daProc.Items(J)
    flXls = False
    If TypeOf myMex Is MailItem Then
        mSender = myMex.SenderName
'Stop
'        If myMex.SenderEmailType = "EX" Then
'            mSender = (myMex.Sender.GetExchangeUser.PrimarySmtpAddress)
'        Else
'            mSender = (myMex.SenderEmailAddress)
'        End If
'bonifica Adr:
        For I = 1 To Len(noBB)
            mSender = Replace(mSender, Mid(noBB, I, 1), "#", , , vbTextCompare)
        Next I
        myTim = Timer
        AttCnt = myMex.Attachments.Count
        If AttCnt > 0 Then
            For I = 1 To AttCnt
                '"Sistema" il nome file:
                AName = myMex.Attachments(I).DisplayName
                mySplit = Split(" " & AName, ".", , vbTextCompare)
                If UBound(mySplit, 1) > 0 Then
                    AName = mSender & "_" & Replace(AName, "." & mySplit(UBound(mySplit, 1)), "_" & Format(Now, "hh-mm-ss") & "." & mySplit(UBound(mySplit, 1)))
                Else
                    AName = mSender & "_" & AName & "_" & Format(Now, "hh-mm-ss")
                End If
                'se file xls, salva allegato:
                If InStr(1, mySplit(UBound(mySplit)), "xls", vbTextCompare) > 0 Then
                    fCnt = fCnt + 1
                    myMex.Attachments(I).SaveAsFile DayPath & PS & AName
                    flXls = True
                End If
            Next I
        Else
            'Niente?
        End If
        If flXls Then mWAtt = mWAtt + 1
        'Sposta messaggio:
        myMex.Move Procd
'eventuale attesa per >1 sec:
        If (Timer - myTim) < 1 Then
            eDel = (myTim + 1.5 - Timer)
            myWait (eDel)
        End If
    End If
'Next myMex
Next J
mRes = daProc.Items.Count       'Itm residui (non mailItems)
MsgBox ("Completato... " & vbCrLf & "Messaggi esaminati: " & mTot _
    & vbCrLf & "Mail (spostate) con allegati: " & mWAtt _
    & vbCrLf & "Totale file allegati: " & fCnt _
    & vbCrLf & "Messaggi rimanenti (non spostati): " & mRes)

End Sub

Sub myWait(ByVal myStab As Single)
Dim myStTiM As Single
'
    myStTiM = Timer
    Do          'wait myStab
        DoEvents
        If Timer > myStTiM + myStab Or Timer < myStTiM Then Exit Do
    Loop
End Sub

Va messo tutto in un Modulo standard del vba di Outlook, e all'occorrenza lanciare la Sub WorkAll.

Ci sono, nella parte iniziale, tre istruzioni marcate <<< che sono da personalizzare con "il percorso" col nome del folder che contiene le mail da processare e del folder dove le mail verranno spostate, e la "directory base" (in cui sara' creata una subdirectory giornaliera, stile YY-MM-GG) in cui saranno infine copiati gli allegati; la "directory base" deve gia' esistere.

Il nome del file e' creato anteponendovi l'indirizzo email del mittente (nota 1) e posponendovi un suffisso orario (stile HH-MM-SS).
Esempio:
nome@dominio.it_NomeFileOriginale_01-21-32.xlsx

Solo i file "xls*" saranno scaricati.

Messaggi che non siano email verranno lasciate nel folder "da processare"

Nota1: Non sono certo del comportamento dell'istruzione che cerca di raccogliere l'email del mittente (dipende da alcuni fattori che non ho inquadrato bene), quindi prova inizialmente con pochi messaggi e verifica poi la situazione degli allegati scaricati.
Dimmi anche che versione di Outlook usi.

Fai sapere...

Re: RINOMINARE E SALVARE ALLEGATI MAIL OUTLOOK
christianghz @ 11/01/18 12:08

Grande Anthony,
una cannonata.

Grazie mille.

Io uso Office 2013 ma proverò anche su 2016, ti farò sapere.

ti chiedo dove devo modificare questo mega codice perchè accetti anche .xlsx?
Sempre sia possibile,

grazie

Christian

Re: RINOMINARE E SALVARE ALLEGATI MAIL OUTLOOK
christianghz @ 11/01/18 12:42

ALT,
non serve.

Ho provato con degli .xlsx e processa anche quelli senza problemi!

Re: RINOMINARE E SALVARE ALLEGATI MAIL OUTLOOK
Anthony47 @ 11/01/18 13:46

Solo i file "xls*" saranno scaricati
Solo e tutti i file "XLS*"

Alla prossima


Rispondi al post

Pagina 1 di 1

Torna a Applicazioni Office Windows


Glossario | Blog | Cerca
© 2000-2018 pc-facile.com