Inviare email con VBA allegando PDF

Anonimo
2015-02-23T17:13:55+00:00

Salve, ho provato a curiosare approfonditamente e a cercare di risolvere in autonomia il problema ma supera le mie capacità.

Ho questo codice VBA che mi permette di compilare una email da una anagrafica clienti semplicemente selezionando una cella della riga interessata, e fin qui tutto bene. IL problema mi si pone dal fatto che ogni email corrisponde ad un cliente diverso e quindi ad una fattura diversa, Come vedete nel codice tutte le volte devo specificare l'indirizzo esatto del file per allegarlo,  vorrei snellire la procedura in qualche modo.

Mi potete aiutare?

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
2015-02-23T21:12:41+00:00

Ciao Andrea,

Ho ricevuto il tuo file.

Innanzitutto, penso sia meglio di condividere il tuo file su un servizio di condivisione, come Microsoft OneDrive. In questo modo tutti potranno vedere il file e aumenterai le possibilità di ricevere assistenza utile.

Tuttavia, credo che il tuo problema sia dovuto al fatto che il codice fornisce il percoso del file allegato ma tu stai immettendo questo percorso, insieme con il nome del file, nella colonna G. Per superare il problema, ho modificato il codice così:

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

Option Explicit

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

Public Sub InviaMail_Parametrica_RigaSelezionata()

    Dim srcRng As Range

    Dim OutApp As Object

    Dim OutMail As Object

    Dim FraseFinale As String

    Dim Nome As String

    Dim Mittente_FROM As String

    Dim Destinatario_TO As String

    Dim Destinatario_CC As String

    Dim Oggetto As String

    Dim Testo As String

    Dim myAttachment As String

    Dim sFilename As String

    Const sFoglio As String = "INVIO MAIL"                    '<<==== Modificare

    Set srcRng = ActiveCell.EntireRow.Resize(1, 7)

    With srcRng

        If .Cells(1).Value = vbNullString Then

            Call MsgBox(Prompt:="Seleziona una cella della riga" _

                                & Chr(10) _

                                & "contenente i dati della mail da inviare!", _

                        Buttons:=vbInformation, _

                        Title:="ATTENZIONE")

            Exit Sub

        End If

        Set OutApp = CreateObject("Outlook.Application")

        Set OutMail = OutApp.CreateItem(0)

        Nome = .Cells(1).Value

        Destinatario_TO = .Cells(2).Value

        Destinatario_CC = ""

        Oggetto = .Cells(5).Value

        Testo = .Cells(6).Value

        sFilename = .Cells(7).Value

    End With

    With OutMail

        .To = Destinatario_TO

        .CC = Destinatario_CC

        .Subject = Oggetto & " " & "INVIO FATTURA " & Nome

        .Body = "Ciao " & Nome & _

                Chr(10) & Testo

        If sFilename <> vbNullString Then

            .Attachments.Add sFilename

        End If

        .Display  '\per aprire e controllare la mail prima di inviarla manualmente

    End With

    Set OutMail = Nothing

    Set OutApp = Nothing

End Sub

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

Ti ho inviato il file aggiornato.

===

Regards,

Norman

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2015-02-25T09:16:21+00:00

Ciao Andrea,

 ti ringrazio per le correzioni e il codice precedente che funzionano perfettamente.

Mi fa piacere che hai risolto il problema e ti ringrazio del tuo cortese riscontro.

Avrei un nuovo quesito che mi arrovella.

Visto che si tratta di una nuova domanda, ti chiederei di chiudere questo thread e poi aprire un nuovo thread per il nuovo quesito.

In questo modo, tu aiuterai coloro che potrebbero cercare soluzioni ai problemi simili negli archivi della comunità e, allo stesso tempo, tu migliorerai la probabilità di raggiungere una risoluzione positiva del tuo nuovo problema.

Per chiudere questo thread, ti chiederei di gentilmente segnare la mia risposta come Risposta.

===

Regards,

Norman

La risposta è stata utile?

0 commenti Nessun commento

5 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2015-02-23T17:49:56+00:00

    Ciao Andea,

    Potresti gentilmente incollare il codice che stai usando anziché di postare un'immagine poco leggibile del codice?

    ===

    Regards,

    Norman

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2015-02-23T19:18:47+00:00

    Ciao Andrea, 

    Se il nome del file, ad esempio Pippo, si trova nella colonna G della riga attiva, prova qualcosa del genere:

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

    Option Explicit

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

    Public Sub InviaMail_Parametrica_RigaSelezionata()

        Dim srcRng As Range

        Dim OutApp As Object

        Dim OutMail As Object

        Dim FraseFinale As String

        Dim Nome As String

        Dim Mittente_FROM As String

        Dim Destinatario_TO As String

        Dim Destinatario_CC As String

        Dim Oggetto As String

        Dim Testo As String

        Dim myAttachment As String

        Dim sFilename As String

        Dim sStr As String

        Const sFoglio As String = "Foglio1"                    '<<==== Modificare

        Const sPercorso As String = _

                      "C:\Users\Andrea\SkyDrive\Dropbox\Sky Drive\ANDREA\eBAY\FATTURE CLIENTI"

        Set srcRng = ActiveCell.EntireRow.Resize(1, 7)

        With srcRng

            If .Cells(1).Value = vbNullString Then

                Call MsgBox(Prompt:="Seleziona una cella della riga" _

                                    & Chr(10) _

                                    & "contenente i dati della mail da inviare!", _

                            Buttons:=vbInformation, _

                            Title:="ATTENZIONE")

                Exit Sub

            End If

            Set OutApp = CreateObject("Outlook.Application")

            Set OutMail = OutApp.CreateItem(0)

            Nome = .Cells(1).Value

            Destinatario_TO = .Cells(2).Value

            Destinatario_CC = ""

            Oggetto = .Cells(5).Value

            Testo = .Cells(6).Value

            sStr = .Cells(7).Value

        End With

        With OutMail

            .To = Destinatario_TO

            .CC = Destinatario_CC

            .Subject = Oggetto & " " & "INVIO FATTURA " & Nome

            .Body = "Ciao " & Nome & _

                    Chr(10) & Testo

            If sStr <> vbNullString Then

                sFilename = sPercorso & sStr & ".pdf"

                .Attachments.Add sFilename

            End If

            .Display  '\per aprire e controllare la mail prima di inviarla manualmente

        End With

        Set OutMail = Nothing

        Set OutApp = Nothing

    End Sub

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

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2015-02-23T18:05:04+00:00

    Ciao Andea,

    Potresti gentilmente incollare il codice che stai usando anziché di postare un'immagine poco leggibile del codice?

    ===

    Regards,

    Norman

    Public Sub InviaMail_Parametrica_RigaSelezionata()

        Dim OutApp As Object

        Dim OutMail As Object

        Dim FraseFinale As String

        Dim Nome As String

        Dim Mittente_FROM As String

        Dim Destinatario_TO As String

        Dim Destinatario_CC As String

        Dim Oggetto As String

        Dim Testo As String

        Set OutApp = CreateObject("Outlook.Application")

        Set OutMail = OutApp.CreateItem(0)

        Dim rngFormula As Range

        Set rngFormula = Application.ActiveCell

        If Sheet1.Cells(Selection.Row, 1) <> "" Then

            Nome = Sheet1.Cells(Selection.Row, 1)             'inserire la cella (riga,colonna) che contiene il nome del destinatario

            Destinatario_TO = Sheet1.Cells(Selection.Row, 2)  'inserire la cella (riga,colonna) che contiene la mail destinatario

            Destinatario_CC = ""                              'inserire la cella (riga,colonna) che contiene la mail destinatario in CC

            Oggetto = Sheet1.Cells(Selection.Row, 5)          'inserire la cella (riga,colonna) che contiene l'oggetto della mail

            Testo = Sheet1.Cells(Selection.Row, 6)            'inserire la cella (riga,colonna) che contiene il testo della mail

                With OutMail

                .to = Destinatario_TO

                .CC = Destinatario_CC

                .Subject = Oggetto & " " & "INVIO FATTURA " & Nome

                .Body = "Ciao " & Nome & _

                        Chr(10) & Testo

                If Sheet1.Cells(Selection.Row, 7) <> "" Then

                   .Attachments.Add ("C:\Users\Andrea\SkyDrive\Dropbox\Sky Drive\ANDREA\eBAY\FATTURE CLIENTI\*.*.pdf") 'inserire il percorso ed il nome del file da allegare

                End If

                .Display                          'per aprire e controllare la mail prima di inviarla manualmente

            End With

            Set OutMail = Nothing

            Set OutApp = Nothing

        Else

        MsgBox "Seleziona una cella della riga" & Chr(10) & "contenente i dati della mail da inviare!", vbInformation, "ATTENZIONE"

        End If

    La risposta è stata utile?

    0 commenti Nessun commento