macro VBA mail Outlook da Excel

Anonimo
2022-02-22T09:32:26+00:00

Buongiorno,

ho preparato una macro che aiuti il mio team a ricordare quando in ufficio abbiamo da fare un determinato tipo di attività. La macro funziona alla perfezione ma ragiona in base al fatto che ogni qual volta in una singola cella trova scritto "Spedire" o "Versare" e ed in una cella predefinita (N2) trova la data del giorno (Oggi()) genera una mail con i dati presenti in quella riga, arrivando così a generare diverse mail. Ciò che mi servirebbe è generare una UNICA mail nella quale vengano racchiusi tutti i dati presenti nelle varie righe in corrispondenza delle quali trova la parola "Spedire" / "Versare".

Se siete così gentili, infine, da illustrarmi come posso condividere il file o le informazioni al fine di facilitarvi la risposta, onde evitare di dover incollare il codice qui, ve ne sarei super grato.

Grazie in anticipo

Microsoft 365 e Office | Excel | Per il lavoro | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2022-02-22T17:13:16+00:00

Ciao Simone,

Prova questa leggera modifica:

'========>>

Option Explicit

'-------->>

Public Sub InviaMail()

Dim SH As Worksheet 

Dim Rng As Range 

Dim oApp As Object 

Dim OutMail As Object, oMail As Object 

Dim strbody As String 

Dim titolo As String, prodotto As String 

Dim numero As Long, pratica As Long 

Dim iRow As Long, LRow As Long 

Dim bFlag As Boolean 

Const sFoglio As String = "Scadenzario" 

Set SH = ThisWorkbook.Sheets(sFoglio) 

With SH 

    LRow = LastRow(SH, .Columns("A:A"), 2) 

    Set Rng = .Range("A2:A" & LRow) 

    For iRow = 2 To LRow 

        If .Cells(iRow, 11).Value = "Spedire" Or .Cells(iRow, 11).Value = "Versare" Then 

            If .Cells(iRow, 9).Value = .Cells(2, 14).Value Then 

                bFlag = True 

                numero = .Cells(iRow, 6).Value 

                titolo = .Cells(iRow, 5).Value 

                prodotto = .Cells(iRow, 3).Value 

                pratica = .Cells(iRow, 1).Value 

                strbody = strbody & "<BODY style = font-size:11pt; font-family:Calibri; font-type:bold>" & \_ 

                    "<font color = #0070C0> <b><br> abbiamo n. " & numero & " " & titolo \_ 

                    & " da spedire per il prodotto " & prodotto & " (pratica " & pratica & ")." 

            End If 

        End If 

    Next iRow 

End With 

If Not bFlag Then 

    Call MsgBox(Prompt:="Nessun titolo da Spedire/Versare trovato!", \_ 

        Buttons:=vbInformation, \_ 

        Title:="REPORT") 

    Exit Sub 

End If 

Set oApp = CreateObject("Outlook.Application") 

strbody = "<BODY style = font-size:11pt; font-family:Calibri; font-type:bold>" & \_ 

    "<font color = #0070C0> <b>Ciao B.O.," & strbody \_ 

    & "<br> <br> Controlliamo lo scadenzario e prepariamo la spedizione / il versamento.</font>" 

Set oMail = oApp.CreateItem(0) 

On Error Resume Next 

With oMail 

    .To = "" 

    .Subject = "Alert: Titoli da spedire / versare" 

    .HTMLBody = strbody & .HTMLBody 

    .CC = "" 

    .Display 

End With 

On Error GoTo 0 

Set oMail = Nothing 

End Sub

'--------->>

Public Function LastRow(SH As Worksheet, _

Optional Rng As Range, \_ 

Optional minRow As Long = 1) 

If Rng Is Nothing Then 

    Set Rng = SH.Cells 

End If 

On Error Resume Next 

LastRow = Rng.Find(What:="\*", \_ 

    After:=Rng.Cells(1), \_ 

    Lookat:=xlPart, \_ 

    LookIn:=xlFormulas, \_ 

    SearchOrder:=xlByRows, \_ 

    SearchDirection:=xlPrevious, \_ 

    MatchCase:=False).Row 

On Error GoTo 0 

If LastRow < minRow Then 

    LastRow = minRow 

End If 

End Function

'<<========

Ho aggiornato il mio file di prova Simone20220122.xlsm

===

Regards,

Norman

Immagine

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

11 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2022-02-22T10:01:57+00:00

    Ciao Simone,

    Ciao Norman,

    ok l'ho caricato sul mio OneDrive, come faccio a condividerlo con te? che nome / mail / tag inserisco?

    Grazie

    Al link Condividere file e cartelle di OneDrive già indicato, segui le istruzioni nella sezione Condividere usando "Copia collegamento" per creare e copiare un link.

    Quindi posta il link in una risposta qui.

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2022-02-22T10:00:14+00:00

    Ciao Norman,

    ok l'ho caricato sul mio OneDrive, come faccio a condividerlo con te? che nome / mail / tag inserisco?

    Grazie

    Ciao Norman, ti ho abilitato alla consultazione e modifica del file, attendo tue,

    Grazie

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2022-02-22T09:45:33+00:00

    Ciao Norman,

    ok l'ho caricato sul mio OneDrive, come faccio a condividerlo con te? che nome / mail / tag inserisco?

    Grazie

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2022-02-22T09:39:45+00:00

    Ciao Simone,

    ho preparato una macro che aiuti il mio team a ricordare quando in ufficio abbiamo da fare un determinato tipo di attività. La macro funziona alla perfezione ma ragiona in base al fatto che ogni qual volta in una singola cella trova scritto "Spedire" o "Versare" e ed in una cella predefinita (N2) trova la data del giorno (Oggi()) genera una mail con i dati presenti in quella riga, arrivando così a generare diverse mail. Ciò che mi servirebbe è generare una UNICA mail nella quale vengano racchiusi tutti i dati presenti nelle varie righe in corrispondenza delle quali trova la parola "Spedire" / "Versare".

    Se siete così gentili, infine, da illustrarmi come posso condividere il file o le informazioni al fine di facilitarvi la risposta, onde evitare di dover incollare il codice qui, ve ne sarei super grato.

    Per caricare il file su Microsoft OneDrive, vedi:

       Condividere file e cartelle di OneDrive

    Per caricare il file su DropBox, vedi:

    Come faccio a condividere file e cartelle in Dropbox?

    Quando carichi il file, assicurati di includere il codice della macro corrente.

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento