Login Registrati
Stai vedendo 19 articoli - dal 1 a 19 (di 19 totali)
  • Autore
    Articoli
  • #7872 Risposta

    tbassi
    Partecipante

      Avrei bisogno di aiuto per creare una macro in excel. Ho un file in cui c'è un foglio con una serie di dati che rappresentano contratti in scadenza, un altro che crea una pivot con gli indirizzi mail, un terzo in cui estraggo solo i dati relativi ad uno specifico indirizzo mail della lista. Lo scopo finale è di creare tante mail mettendo nel corpo del testo o come allegato i contratti in scadenza di pertinenza della stessa persona, quindi tante mail quanti sono i nominativi della pivot. Ci sto ammattendo. Qualcuno può aiutarmi? Posso mandare il file se serve. Grazie per la collaborazione

      Allegati:
      You must be logged in to view attached files.
      #7877 Risposta
      albatros54
      albatros54
      Moderatore
        10 pts

        Da quello che ho capito, dal foglio"Invio" tu vuoi mandare delle Email agli indirizzi che si trovano nella colonna "J" con allego che cosa.

         

        Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
        Sempre il mare, uomo libero, amerai!
        ( Charles Baudelaire )
        #7881 Risposta

        tbassi
        Partecipante

          la richiesta è di mandare una mail all'indirizzo di pertinenza (quello che trovi nella cella J2 del foglio "invia" che, alternativa, riporti quella tabella nel testo della mail oppure il foglio "invia" come allegato .
          In pratica dovrebbe ripetere la routine di spedizione per tutti i nominativi mail che trova nel foglio indirizzi.
          Grazie davvero tanto per il tuo interessamento.

          #7885 Risposta
          albatros54
          albatros54
          Moderatore
            10 pts

            Ho presupposto che nel folgio "indirizzi" gli stessi cominciano dalla righa 4.

            Ti posto questo codice ,  tratto da un thread precedente e che ho adattato alle tue esigenze, non so se fa quanto richiesto,.

            il codice salva in formato PDF il foglio"Invia", e lo allega a tutte l'email che spedisci prendendo gli indirizzi dal range del foglio"indirizzi", il codice lo devi inserire in un modulo  VBA e lo lanci.

            Sub SendWorkSheetToPDF()
            
                Dim Wb As Workbook
                Dim FileName As String
                Dim OutlookApp As Object
                Dim OutlookMail As Object
                On Error Resume Next
                Set Wb = Application.ActiveWorkbook
                Sheets("indirizzi").Select
                i = 4
                While Trim(Cells(i, 1)) <> ""
                    mail = Cells(i, 1)
            
                    ccmail = Cells(i, 4)
                    FileName = Wb.FullName
                    xIndex = VBA.InStrRev(FileName, ".")
                    If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
                    FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
                    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
                    Set OutlookApp = CreateObject("Outlook.Application")
                    Set OutlookMail = OutlookApp.CreateItem(0)
                    With OutlookMail
                        .To = "Tua EMAIL"
                        .CC = mail
                        .BCC = ""
                        .Subject = ""
                        .Body = ""
                        .Attachments.Add FileName
                        '.Send
                    End With
                    i = i + 1
                Wend
            
                Set OutlookMail = Nothing
                Set OutlookApp = Nothing
            End Sub
            

             

            Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
            Sempre il mare, uomo libero, amerai!
            ( Charles Baudelaire )
            #7939 Risposta

            tbassi
            Partecipante

              grazie per la risposta tempestiva.

              Va bene per quanto riguarda l'invio del file PDF del foglio "Invia".

              In realtà lo scopo è che venga spedito il foglio con tutti le righe relative ai contratti in scadenza che hanno lo stesso indirizzo nella colonna J del foglio "Invia". Per ottenere questo risultato occorre che vengano di volta in volta copiati in sequenza gli indirizzi contenuti nell'elenco del foglio "indirizzi" nel campo J3 del foglio "criterio" e venga attivata l'estrazione dei dati risultanti nel foglio "invia".

              Per spiegarmi meglio:

              1. inserire il primo indirizzo nel campo J3 del foglio "criterio"

              2. attivare l'estrazione che mette i dati risultanti nel foglio "Invia"

              3. creare il PDF del foglio "invia" e allegarlo alla mail che verrà spedita all'indirizzo riportato nella colonna J

              Questo passaggio va ripetuto più volte fino ad esaurimento degli indirizzi contenuti nell'omonimo foglio.

              Una domanda: i file PDF generati vengono salvati da qualche parte?

              Grazie davvero per il prezioso aiuto

              #7940 Risposta

              vecchio frac
              Moderatore
                16 pts

                tbassi wrote:Una domanda: i file PDF generati vengono salvati da qualche parte?

                Rispondo io: nel codice visto i file PDF generati hanno lo stesso percorso del Workbook corrente (l'istruzione è questa: FileName = Wb.FullName). Se vuoi salvare i PDF generati in una cartella diversa devi assegnare a FileName un percorso diverso in quel punto, perchè poi la variabile FileName viene completata con il nome di file vero e proprio in questa istruzione: FileName = FileName & "_" + ActiveSheet.Name & ".pdf", dove al percorso viene aggiunto il nome del foglio attivo e l'estensione pdf.

                 

                #8026 Risposta

                tbassi
                Partecipante

                  Quello che mi serve è che nel foglio "criterio" venga messo (uno per volta) ciascuno degli indirizzi mail che si trovano nel foglio "indirizzi", venga eseguita l'estrazione nel foglio "invia" dei soli contratti che contengono quella mail e spedito come allegato PDF al quella mail.
                  In pratica:
                  1. legge il primo indirizzo nel foglio "indirizzi"
                  2. lo copia nella cella J3 del foglio "criteri"
                  3. esegue il filtro avanzato per estrarre i dati nel foglio "invia"
                  4. crea il PDF e spedisce la mail

                  Questo ciclo va eseguito per ogni indirizzo contenuto nel foglio "Indirizzi".
                  Spero di essere riuscita a spiegarmi meglio.
                  Grazie per la pazienza.

                  #8044 Risposta
                  albatros54
                  albatros54
                  Moderatore
                    10 pts

                    Allora, ti allego questo codice , che spero faccia quello che hai chiesto,se ho capito.

                    il codice non fa altro che  controllare le email del foglio"Indirizzi", per ogni emailtrovata la copia nel foglio"criteri"nella colonna"J",trovati l'email cerca questa email nel foglio"Estrazione" con il metodo.Find, una volta trovato l'indirizzo corrispondente, copia tutti i dati della riga e le incolla nella seconda riga del fogli"invia", a questo punto salva il file in formato PDF, con il nome dell'email, e la inoltra, dopo averla inltrata riprende il cilo While finche non trova una riga vuota, il codice lo devi inserire in un modulo VBA  

                    Sub SendWorkSheetToPDF()
                    
                        Dim Wb As Workbook
                        Dim FileName As String
                        Dim OutlookApp As Object
                        Dim OutlookMail As Object
                    
                        Dim sh As Worksheet
                        Dim sh1 As Worksheet
                        With ThisWorkbook
                            Set sh = .Worksheets("criterio")
                            Set sh1 = .Worksheets("indirizzi")
                            Set sh2 = .Worksheets("estrazione")
                            Set sh3 = .Worksheets("invia")
                    
                        End With
                        Application.ScreenUpdating = False
                        On Error Resume Next
                        Set Wb = ThisWorkbook
                        i = 4
                        While Trim(sh1.Cells(i, 1)) <> ""
                            mail = sh1.Cells(i, 1)
                            lastrow = sh.Cells(Rows.Count, "J").End(xlUp).Row
                            sh.Cells(lastrow + 1, "J") = mail
                            With sh2
                                Set cell = .Range("j2:j" & lastrow).Find(mail)
                                rigatrovato = cell.Row
                                .Range("A" & rigatrovato & ":L" & rigatrovato).Copy
                                sh3.Range("A2").PasteSpecial
                                Application.CutCopyMode = False
                            End With
                            sh3.PageSetup.PrintArea = "$a$1:$l$2"
                            With ActiveSheet.PageSetup
                                .Orientation = xlLandscape
                                .PaperSize = xlPaperA4
                                .Zoom = 70
                            End With
                            ccmail = Cells(i, 4)
                            FileName = Wb.FullName
                            xIndex = VBA.InStrRev(FileName, ".")
                            If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
                            FileName = FileName & "_" + mail & ".pdf"
                            ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
                            Set OutlookApp = CreateObject("Outlook.Application")
                            Set OutlookMail = OutlookApp.CreateItem(0)
                            With OutlookMail
                                .To = "Tua EMAIL"
                                .CC = mail
                                .BCC = ""
                                .Subject = ""
                                .Body = ""
                                .Attachments.Add FileName
                                .Send
                            End With
                            i = i + 1
                        Wend
                        Application.ScreenUpdating = False
                        Set OutlookMail = Nothing
                        Set OutlookApp = Nothing
                    End Sub

                     

                    Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
                    Sempre il mare, uomo libero, amerai!
                    ( Charles Baudelaire )
                    #8056 Risposta

                    tbassi
                    Partecipante

                      Grazie per la nuova macro.

                      L'ho testata ma c'è qualcosa che non funziona.

                      Lo scopo è di copiare nel foglio "estrazione" il primo indirizzo che trova nel foglio "indirizzi".

                      A questo punto il range A2:M3 deve diventare la zona criterio per l'estrazione di tutte le righe che hanno quell'indirizzo mail e nel foglio "invia" devono essere riportate le sole righe che hanno quello stesso indirizzo mail.

                      Ora questo non avviene, cioè il foglio "invia" rimane vuoto (e questo sarebbe il foglio da spedire via mail al proprietario di quell'indirizzo mail).

                      Quando passa a copiare il successivo indirizzo dal foglio "Indirizzi" al foglio "estrazione" dovrebbe cancellare l'indirizzo precedente in modo da poter fare la successiva estrazione.

                      La spedizione delle mail avviene correttamente, ma non vengono spediti i dati giusti.

                      Comunque siamo sulla buona strada.

                       

                       

                      #8077 Risposta
                      albatros54
                      albatros54
                      Moderatore
                        10 pts

                        Ti posto questo file.

                         

                         

                        Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
                        Sempre il mare, uomo libero, amerai!
                        ( Charles Baudelaire )
                        Allegati:
                        You must be logged in to view attached files.
                        #8116 Risposta

                        tbassi
                        Partecipante

                          Grazie mille per la risposta. Purtroppo non è ancora quello che mi serve.

                          Ho provato a fare dei passaggi manualmente e vediamo se così riesco a raggiungere l'obiettivo.

                          SELEZIONE DELL’INDIRIZZO MAIL DA COPIARE NELLA CELLA J2 DEL FOGLIO “criterio”

                          ‘  posiziona il cursore nella cella A4 che è quella in cui si trova il primo indirizzo mail

                          '   e ne copia il contenuto nella cella J2 del foglio "criterio"

                              Sheets("indirizzi").Select

                              Range("A4").Select

                              Selection.Copy

                              Sheets("criterio").Select

                              Range("J2").Select

                              ActiveSheet.Paste

                          <em>questo dovrebbe essere un ciclo che si ripete per ogni indirizzo che si trova nelle celle da A4 in giù finchè non finiscono gli indirizzi.</em>

                          Dopo aver copiato l'indirizzo nel foglio criterio dovrebbe fare questo:

                          ESTRAZIONE DEI DATI

                          ‘ posiziona il cursore nella cella A3 del foglio “Invia”, cancella il precedente contenuto

                          ‘ estrae tutte le righe del foglio “estrazione” che hanno l’indirizzo mail indicato nella cella J2 del foglio criterio

                          Sheets("invia").Select

                              Range("A3").Select

                              Range(Selection, Selection.End(xlDown)).Select

                              Range(Selection, Selection.End(xlToRight)).Select

                              Range(Selection, Selection.End(xlToRight)).Select

                              Range(Selection, Selection.End(xlToRight)).Select

                              Selection.ClearContents

                              Range("A3").Select

                              Range("dati").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _

                                  "criterio"), CopyToRange:=Range("A2:L2"), Unique:=False

                          Quello che non riesco a fare è impostare il ciclo che ripete più volte la selezione dell'indirizzo mail da copiare prendendo di volta in volta gli indirizzi sottostanti.

                          Grazie per l'aiuto

                           

                          #8117 Risposta
                          albatros54
                          albatros54
                          Moderatore
                            10 pts

                            Scusa, fa tutto il codice, tu non devi selezionare niente, l'unica cosa che devi fare è quella di inserire nel foglio "indirizzi" le email che il codice deve trovare e spedire il foglio. Se hai scaricato il file nel foglio "Estrazioni" ho inserito diversi email, lancia il codice e vedi auello che succede.Per quanto riguarda il foglio"criteri", il criterio viene effettuato nel foglio"estrazioni", nel foglio "indirizzi" fai cick sul pulsante e vedi quello che succede.

                             

                            Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
                            Sempre il mare, uomo libero, amerai!
                            ( Charles Baudelaire )
                            #8126 Risposta

                            tbassi
                            Partecipante

                              Ho premuto il pulsante nel foglio "indirizzi". Lo avevo fatto anche prima, quando ho scaricato il foglio, ma non mi estrae nulla nel foglio "invia".

                              Ti mando lo screenshot dello schermo dopo aver premuto il pulsante.

                              Nel frattempo ho fatto una modifica e gli faccio aggiornare l'estrazione degli indirizzi mail nel foglio "indirizzi" quando viene aperto il file.

                              Allego il file modificato. Nel foglio "invia" ci sono tutti i contratti di pertinenza del primo indirizzo mail che c'è nel foglio "Indirizzi" (li ho estratti manualmente, ma è questo il risultato che mi serve).

                              Ho forse mal compreso qualcosa?

                               

                               

                              Allegati:
                              You must be logged in to view attached files.
                              #8130 Risposta
                              albatros54
                              albatros54
                              Moderatore
                                10 pts

                                Il codice non fa quello che deve fare , perchè tua hai modificato la struttura del foglio"Estrazioni", mettendo sulla riga 1 una striscia, il codice per poter funziona  nel foglio"estrazione" la prima riga deve essere occupata dall'intestazione,ti allego i file in PDF che il codice genera.

                                 

                                Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
                                Sempre il mare, uomo libero, amerai!
                                ( Charles Baudelaire )
                                Allegati:
                                You must be logged in to view attached files.
                                #8137 Risposta

                                tbassi
                                Partecipante

                                  Ho tolto la prima riga. Ho constatato che premendo il pulsante vengono generati i file PDF nella stessa cartella in cui si trova il file. Perfetto.

                                  Solo un chiarimento: per spedire automaticamente i PDF allegati alle mail devo eseguire l'altra macro SendWorkSheetToPDF?

                                  Sei stato davvero gentile e paziente. Te ne sono molto grata

                                   

                                   

                                  #8142 Risposta
                                  albatros54
                                  albatros54
                                  Moderatore
                                    10 pts

                                    tbassi ha scritto:

                                    Solo un chiarimento: per spedire automaticamente i PDF allegati alle mail devo eseguire l'altra macro SendWorkSheetToPDF?

                                    clickando sul pulsante si esegue il codice della routine "SendWorkSheetToPDF", che spedisce anche l'email,solo che il comando ".Send" del codice l'ho commentato per fare girare il codice,tu dovresti,spero tanto che tu sia capace, aprire la routine dall'editor VBA e togliere il commento(l'apostrofo ') dalla riga .send. automaticamente il codice crea il foglioin PDF e lo invia.

                                     

                                    Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
                                    Sempre il mare, uomo libero, amerai!
                                    ( Charles Baudelaire )
                                    #8154 Risposta

                                    mb
                                    Partecipante

                                      ciao albatros complimenti per il bellissimo lavoro, ti disturbo per chiederti una spiegazione.

                                       

                                      A me funziona tutto ma non genera la procedura su outlook, io ho windows10 e office 2016

                                       

                                      ho verificato i file pdf vengono generati, ho attivato la Microsoft outlook 16 object librery, che cosa mi sono perso ??

                                       

                                      Spero di essere stato chiaro nella spiegazione

                                      grazie

                                       

                                      #8157 Risposta

                                      mb
                                      Partecipante

                                        Risolto non avevo ancora preso la mia dose quotidiana di .....

                                         

                                        pane , volpe e succo d'acquila 

                                        grazie ancora a tutti per i preziosi "suggerimenti"  

                                        buon fine settimana

                                         

                                         

                                        #8176 Risposta

                                        tbassi
                                        Partecipante

                                          Ok. Tutto chiaro. Grazie ancora per la collaborazione.

                                        Login Registrati
                                        Stai vedendo 19 articoli - dal 1 a 19 (di 19 totali)
                                        Rispondi a: macro che crea mail
                                        Gli allegati sono permessi solo ad utenti REGISTRATI
                                        Le tue informazioni:



                                        vecchio frac - 593 risposte

                                        albatros54
                                        albatros54 - 507 risposte

                                        Marius44
                                        Marius44 - 270 risposte

                                        patel
                                        patel - 257 risposte

                                        Luca73
                                        Luca73 - 194 risposte

                                        ChatBox per richiedere velocemente assistenza a semplici problematiche

                                        Devi fare il login per scrivere nella chat

                                        0
                                        1