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-25T08:26:38+00:00

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

    Avrei un nuovo quesito che mi arrovella.

    Ho un codice con il quale creo il PDF di un foglio (fattura) e lo salvo con un nome che inserisco, peril  momento volutamente, a mano.

    MI piacerebbe però che in automatico dopo il salvataggio inserisse il percorso dell'archivio in cui reperirlo direttamente nella cella corrispondente all'anagrafica del cliente, in modo sucessivamente di poterlo utilizzare per inviare emailcon il tuo codice di cui sopra.

    Premesso che la cella deputata sta alla colonna "S" al foglio "Anagrafica", è possibile?

    Ti allego il codice che uso ora per il PDF

    Sub SalvaInPDF()

        Const cPath  As String = "C:\Users\Andrea\SkyDrive\Dropbox\Sky Drive\ANDREA\eBAY\FATTURE CLIENTI"

        Dim varNomeFile As Variant

        varNomeFile = Application.InputBox(Prompt:="Scrivi il nome del file PDF", _

            Title:="Nome del file PDF da salvare", _

            Type:=2)

        If varNomeFile = False Then Exit Sub

        If Len(varNomeFile & vbNullString) = 0 Then Exit Sub

        ActiveSheet.ExportAsFixedFormat _

            Type:=xlTypePDF, _

            Filename:=cPath & varNomeFile & Format(Date, "_dd_mm_yyyy"), _

            Quality:=xlQualityStandard, _

            OpenAfterPublish:=False

    End Sub

    GRAZIE; Andrea

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-02-23T21:33:44+00:00

    Ciao Norman, ti ringrazio per la risposta è condivido la scelta di pubblicare, ti ho inviato il file per capire meglio il problema. Domani proverò le tue modifiche, che sicuramente andranno bene e poi ti dirò.

    grazie mille......

    La risposta è stata utile?

    0 commenti Nessun commento