Condividi tramite

GENERAZIONE E-MAIL AUTOMATICA CON VBA

Anonimo
2017-11-10T13:37:23+00:00

Ciao Norman!

ho compilato la seguente struttura per la generazione automatica di un e-mail (e funziona :D):

Sub Make_Outlook_Mail_With_File_Link()

    Dim OutApp As Object

    Dim OutMail As Object

    Dim strbody As String

    If ActiveWorkbook.Path <> "" Then

        Set OutApp = CreateObject("Outlook.Application")

        Set OutMail = OutApp.CreateItem(0)

        strbody = "<font size=""3"" face=""Calibri"">" & _

                  "Buongiorno,<br><br>" & vbNewLine & vbCrLf & Chr(13) & _

                  Range("AE2").Value & _

                  "<br><br>Cordiali Saluti"

        On Error Resume Next

        With OutMail

            .To = "******@hotmail.it"

            .CC = ""

            .BCC = ""

            .Subject = "AVVISO ASSENZA TECNICO"

            .HTMLBody = strbody

            .Display   'or use .Send

        End With

        On Error GoTo 0

        Set OutMail = Nothing

        Set OutApp = Nothing

    Else

        MsgBox "The ActiveWorkbook does not have a path, Save the file first."

    End If

End Sub

Il testo si auto crea nella colonna "AE" ogni qual volta io compilo delle colonne precedenti, mentre il numero della riga è sempre sequenziale (compilo la riga 3 per esempio, il testo si compilerà nella cella "AE3).

Come faccio a dire alla struttura di non prendere il testo dalla cella "AE2", come è espresso in questa funzione, ma di passare a quella dell'ultima riga compilata della colonna "AE"?

Considera che nella colonna "AE" se non c'è testo è presente il numero zero.

Grazie

Andrea :D

Microsoft 365 e Office | Excel | Per la casa | 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
2017-11-13T11:26:44+00:00

Ciao Andrea,

Ho scaricato il tuo file e vedo suboto il problema!

Nella colonna AE del foglioSORGENTE & COMPILAZIONE DATI, la tua formula non è quella incata da te, ossia:

ecco la formula:

   =IF(AA2=2,W2,IF(AA2=1,X2,"VUOTA"))

ma invece vedo la formula:

       =IF(AA2=2;W2;IF(AA2=1;X2;""))

A questo priposito vedo la mia risposta precedente nella quale avevo detto:

Con questa formula il codice dovrebbe restituire l'ultima riga effettiva della colonna AE e il codice dovrebbe funzionare nel modo previsto, Avrei previsto un eventuale problema se la formula fosse stata del genere:  =IF(AA2=2,W2,IF(AA2=1,X2,""))      

 !!!

Vedo che difatti la tua formula è precisamente quella che avevo previsto come problematico!

Tu vuoi restituire il contenuto della ultima cella della colonna AE che contenga testo visibile e, pertanto, la mia funzione LastRow non è appropriata poichè questa funzione restituisce l'ultima cella popolata e una cella che contiene una formula - qualunque formula - è sempre popolata!

Quindi, per risolvere il tuo problema, sostituisci la mia funzione LastRow con la seguente funzione:

'=========>>

Public Function LastEffectiveRangeRow(aRng As Range)

    Dim arrIn As Variant

    Dim iRow As Long, i As Long

    arrIn = aRng.Columns(1).Value

    iRow = aRng.Row

    For i = 1 To UBound(arrIn)

        If arrIn(i, 1) = vbNullString Then

            With aRng

                LastEffectiveRangeRow = i - 1

            End With

            Exit Function

        End If

    Next i

End Function

'<<=========

Inoltre,  nella procedura Make_Outlook_Mail_With_File_Link, sostituisci

         With SH

                LRow = LastRow(SH, .Columns(sColonnaCorpo))

                Set RngCorpo = .Columns(sColonnaCorpo).Cells(LRow + 1)

            End With

con:

            With SH

                LRow = LastEffectiveRangeRow(.Columns(sColonnaCorpo))

                Set RngCorpo = .Columns(sColonnaCorpo).Cells(LRow)

            End With

===

Regards,

Norman

La risposta è stata utile?

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

14 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2017-11-13T13:23:40+00:00

    Ciao Andrea,

    Funziona alla Grande!!!!!

    Grazie mille :D

    Grazie a te, Andrea, per il cortese riscontro.

    Alla prossima.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2017-11-13T13:15:43+00:00

    Norman sei il migliore!!!!!!

    Funziona alla Grande!!!!!

    Grazie mille :D

    La risposta è stata utile?

    0 commenti Nessun commento