Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

EXCEL - creazione macro per invio automatico email

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Re: EXCEL - creazione macro per invio automatico email

Postdi ale140 » 06/08/12 21:39

dunque quella era la lista vecchia infatti l'invio era per singolo file, la modifica che volevo fare era appunto allegare n file per ogni singolo nome (riga), che saranno caio.pdf caio1.pdf caio(n).pdf , il problema è che nn posso fare una colonna con la lista dei file da allegare perchè nn li so... perche sono fatture, e ogni nome (cliente) può avere 1 oppure 10 fatture....
il codice è questo (da migliorare) :lol:

Codice: Seleziona tutto

Sub Invia_Email_Ultima_Buona()

    Dim OutApp As Object

    Dim OutMail As Object

    Dim EmailAddr As String

    Dim Subj As String

    Dim BodyText As String

   

    Foglio1.Select

   
    Set OutApp = CreateObject("Outlook.Application")
    OutApp.Quit
    Set OutApp = Nothing
   
    Application.Wait (Now + TimeValue("0:00:05"))
   
   

' RR contiene il numero di utenti cui inviare le e-mail (1 per utente)

    RR = Range("B" & Rows.Count).End(xlUp).Row

   

' I dati iniziano dalla seconda riga

    For I = 2 To RR

        Set OutApp = CreateObject("Outlook.Application")

        Set OutMail = OutApp.CreateItem(0)

        With OutMail

       

' La colonna "B" contiene gli indirizzi e-mail dei vari destinatari

                  .To = Cells(I, 2)

                 

' La colonna "C" contiene l'indirizzo e-mail in "Copia per Conoscenza"

                  .CC = Cells(I, 3)

                 

' Eventuale e-mail in "Copia per conoscenza nascosta"

                  .BCC = ""

                 

' La colonna "D" contiene l'oggetto della e-mail

                  .Subject = Cells(I, 4)

                 

' La colonna "E" contiene l testo della e-mail

                  .Body = Cells(I, 5)



' La colonna "F" contiene il percorso ove si trova il file da allegare

' La colonna "G" contiene il nome del file da allegare

                  .Attachments.Add (Cells(I, 6) & Cells(I, 7))

                 
                .Send
               
                MsgBox ("mail inviata")
               
                Application.Wait (Now + TimeValue("0:00:02"))

        End With
       
        Set OutMail = Nothing

        Set OutApp = Nothing

       

        Application.Wait (Now + TimeValue("0:00:03"))
       
    Next I


MsgBox ("Invio completato")

End Sub


ale140
Newbie
 
Post: 7
Iscritto il: 06/08/12 15:59

Sponsor
 

Re: EXCEL - creazione macro per invio automatico email

Postdi Flash30005 » 06/08/12 22:22

Perdona Ale140 ma ti chiedo cosa vuoi ottenere e mi pubblichi un'immagine dicendo che chiarisce tutto
poi, invece dici
ale140 ha scritto:quella era la lista vecchia infatti l'invio era per singolo file...

:?:

Almeno chiarisci che nell'email di Tizio devi allegare tutti i file a lui relativi
e che i nomi dei file di tizio avranno come parte iniziale tizio....
(Idem per Caio, etc)
E' così?

E se è così e quei file rimarranno nella cartella C:\temp
al prossimo invio oltre ai nuovi file rimanderai di nuovo anche quelli precedenti?
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: EXCEL - creazione macro per invio automatico email

Postdi Flash30005 » 07/08/12 00:39

Leggi post precedente e chiarisci i dubbi
nel frattempo prova questa macro (non ho Ms outlook pertanto non posso testarla)

Codice: Seleziona tutto
Sub Invia_Email_Ultima_Buona()

    Dim OutApp As Object
    Dim OutMail As Object
    Dim EmailAddr As String
    Dim Subj As String
    Dim BodyText As String
    Dim fs, f
    Foglio1.Select
    Set OutApp = CreateObject("Outlook.Application")
    OutApp.Quit
    Set OutApp = Nothing
     Application.Wait (Now + TimeValue("0:00:05"))
' RR contiene il numero di utenti cui inviare le e-mail (1 per utente)
    RR = Range("B" & Rows.Count).End(xlUp).Row
' I dati iniziano dalla seconda riga
    For I = 2 To RR
        Perc = Cells(I, 6).Value
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set f = fs.getfolder(Perc)
        Set NFile = f.Files
        NomeF = Cells(I, 7).Value
        NomeP = Replace(NomeF, ".pdf", "")
        LNome = Len(NomeP)

        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(0)
        With OutMail
' La colonna "B" contiene gli indirizzi e-mail dei vari destinatari
                  .To = Cells(I, 2)
' La colonna "C" contiene l'indirizzo e-mail in "Copia per Conoscenza"
                  .CC = Cells(I, 3)
' Eventuale e-mail in "Copia per conoscenza nascosta"
                  .BCC = ""
' La colonna "D" contiene l'oggetto della e-mail
                 .Subject = Cells(I, 4)
' La colonna "E" contiene l testo della e-mail
                  .Body = Cells(I, 5)
' La colonna "F" contiene il percorso ove si trova il file da allegare
' La colonna "G" contiene il nome del file da allegare
                    For Each Pf1 In NFile
                        If Pf1.Name = "" Then Exit Sub
                        If Mid(Pf1.Name, 1, LNome) = NomeP And Mid(Pf1.Name, Len(Pf1.Name) - 3, 4) = ".pdf" Then
                .Attachments.Add (Perc & Pf1.Name)
                        End If
                    Next
                .Send
                MsgBox ("mail inviata")
                Application.Wait (Now + TimeValue("0:00:02"))
        End With
        Set fs = Nothing
        Set f = Nothing
        Set NFile = Nothing
        Set OutMail = Nothing
        Set OutApp = Nothing
        Application.Wait (Now + TimeValue("0:00:03"))
    Next I
MsgBox ("Invio completato")

End Sub


Fai sapere
ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: EXCEL - creazione macro per invio automatico email

Postdi ale140 » 07/08/12 08:06

Perdona Ale140 ma ti chiedo cosa vuoi ottenere e mi pubblichi un'immagine dicendo che chiarisce tutto
poi, invece dici
ale140 ha scritto:
quella era la lista vecchia infatti l'invio era per singolo file...


purtroppo il file deve rimanere cosi infatti cambia solo la cartella temp che ci sono appunto gli "n" file

Almeno chiarisci che nell'email di Tizio devi allegare tutti i file a lui relativi
e che i nomi dei file di tizio avranno come parte iniziale tizio....
(Idem per Caio, etc)
E' così?


è esattamente cosi

E se è così e quei file rimarranno nella cartella C:\temp
al prossimo invio oltre ai nuovi file rimanderai di nuovo anche quelli precedenti?


la cartella temp verrà pulita prima di ogni invio pensavo di creare un batch ... ma quello dovrei riuscire ad arrangiarmi da solo :lol:
adesso appena riesco provo la macro poi ti faccio sapere

grazie mille :D :D
ale140
Newbie
 
Post: 7
Iscritto il: 06/08/12 15:59

Re: EXCEL - creazione macro per invio automatico email

Postdi ale140 » 07/08/12 08:19

nn ce lo fatta ha resistere... ho provato ... per ora funziona alla grande!!!!! fantastico, quando hai tempo e voglia mi potresti spiegare come hai fatto....

cmq sta sera la provo meglio grazie ancora....
:)
ale140
Newbie
 
Post: 7
Iscritto il: 06/08/12 15:59

Re: EXCEL - creazione macro per invio automatico email

Postdi Flash30005 » 09/08/12 01:39

ale140 ha scritto:...quando hai tempo e voglia mi potresti spiegare come hai fatto....


Ho creato un ciclo For Each dei file contenuti nel percorso (Perc)

La prima parte dell'implementazione sono i settaggi
Codice: Seleziona tutto
        Perc = Cells(I, 6).Value  '<<< il percorso può variare da riga a riga (quindi da utente a utente)
        Set fs = CreateObject("Scripting.FileSystemObject")  '<<<< Funzione inclusa nella libreria
        Set f = fs.getfolder(Perc)   '<<<< Funzione directory
        Set NFile = f.Files  '<<<<<<<< Funzione file
        NomeF = Cells(I, 7).Value    '<<<<<<<< preleva il contenuto riga I colonna 7
        NomeP = Replace(NomeF, ".pdf", "")  '<<<<< Toglie l'estensione lasciando solo il nome del file (utente)
        LNome = Len(NomeP)   '<<<<<< legge la lunghezza della stringa (nome file)


La seconda allega i file che rispettano le condizioni...
Codice: Seleziona tutto
                   For Each Pf1 In NFile  '<<<<< per ogni file della directory prefissata precedentemente
                        If Pf1.Name = "" Then Exit Sub   '<<<<<<< in caso non trovasse file esce dalla routine
                        If Mid(Pf1.Name, 1, LNome) = NomeP And Mid(Pf1.Name, Len(Pf1.Name) - 3, 4) = ".pdf" Then
' la riga precedente funziona anche con una singola condizione:
'if Mid(Pf1.Name, 1, LNome) = NomeP  Then ' in questo caso però potrebbe allegare anche file con il nome ma con diversa estensione (tipo .txt, .doc, etc)
'con la seconda condizione:
'And Mid(Pf1.Name, Len(Pf1.Name) - 3, 4) = ".pdf"  '<<<< vengono considerati che siano solo dei file .pdf
                .Attachments.Add (Perc & Pf1.Name)  '<<< verificata la condizione viene allegato il file
                        End If
                    Next  '<<<< procede con eventuali altri file stesso utente
'...


Con lo stesso procedimento ho implementato la macro per lo spostamento automatico in una sottodirectory di tutti i file allegati

Codice: Seleziona tutto
Sub Invia_Email_Allegati()

    Dim OutApp As Object
    Dim OutMail As Object
    Dim EmailAddr As String
    Dim Subj As String
    Dim BodyText As String
    Dim fs, f
    Foglio1.Select
    Set OutApp = CreateObject("Outlook.Application")
    OutApp.Quit
    Set OutApp = Nothing
     Application.Wait (Now + TimeValue("0:00:05"))
' RR contiene il numero di utenti cui inviare le e-mail (1 per utente)
    RR = Range("B" & Rows.Count).End(xlUp).Row
' I dati iniziano dalla seconda riga
    For I = 2 To RR
        Perc = Cells(I, 6).Value
        If Dir(Perc & "ArchivioAll", vbDirectory) = "" Then MkDir (Perc & "ArchivioAll")
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set f = fs.getfolder(Perc)
        Set NFile = f.Files
        NomeF = Cells(I, 7).Value
        NomeP = Replace(NomeF, ".pdf", "")
        LNome = Len(NomeP)

        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(0)
        With OutMail
' La colonna "B" contiene gli indirizzi e-mail dei vari destinatari
                  .To = Cells(I, 2)
' La colonna "C" contiene l'indirizzo e-mail in "Copia per Conoscenza"
                  .CC = Cells(I, 3)
' Eventuale e-mail in "Copia per conoscenza nascosta"
                  .BCC = ""
' La colonna "D" contiene l'oggetto della e-mail
                 .Subject = Cells(I, 4)
' La colonna "E" contiene l testo della e-mail
                  .Body = Cells(I, 5)
' La colonna "F" contiene il percorso ove si trova il file da allegare
' La colonna "G" contiene il nome del file da allegare
                    For Each Pf1 In NFile
                        If Pf1.Name = "" Then Exit Sub
                        If Mid(Pf1.Name, 1, LNome) = NomeP And Mid(Pf1.Name, Len(Pf1.Name) - 3, 4) = ".pdf" Then
                .Attachments.Add (Perc & Pf1.Name)
                        End If
                    Next
                .Send
                MsgBox ("mail inviata")
                Application.Wait (Now + TimeValue("0:00:02"))
               
                For Each Pf1 In NFile
                    If Pf1.Name = "" Then Exit Sub
                    If Mid(Pf1.Name, 1, LNome) = NomeP And Mid(Pf1.Name, Len(Pf1.Name) - 3, 4) = ".pdf" Then
                        Inpfile = Perc & Pf1.Name
                        outfile = Perc & "ArchivioAll\" & Pf1.Name
                        Name Inpfile As outfile
                    End If
                Next
        End With
        Set fs = Nothing
        Set f = Nothing
        Set NFile = Nothing
        Set OutMail = Nothing
        Set OutApp = Nothing
        Application.Wait (Now + TimeValue("0:00:03"))
    Next I
MsgBox ("Invio completato")

End Sub


Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: EXCEL - creazione macro per invio automatico email

Postdi theShort » 05/03/13 11:50

Ciao a tutti, continuo su questa discussione per non aprirne una doppia con lo stesso argomento. Se ho sbagliato chiedo scusa.

Veniamo al mio problema. Ho creato con un file in excel (excel 2010) una maschera di inserimento dati che occupa un'area compresa tra la colonna A e la colonna G e tra la riga 1 e la riga 29. Fatto questo, ho provato ad aggiungere un codice VBA che mi permettesse di aggiungere questa area di dati nel corpo di una mail html mantenendone la formattazione e sfruttando Outlook.
Seguendo questa discussione, sono arrivato a scivere qusto codice:
Codice: Seleziona tutto
Private Sub CommandButton1_Click()

    Dim oOutlook As Object
    Dim OutApp As Object
    Dim OutMail As Object
    Dim EmailAddr As String
    Dim Subj As String
    Dim BodyText As String
   
    'On Error GoTo err_handler

    EmailAddr = Range("E5").Value
    Subj = Range("A1").Value
    'BodyText = Range("C26").Value
    BodyText = ""
        For RR = 1 To 31
            For CC = 1 To 7
                If Cells(RR, CC).Value = "" Then GoTo avanti
                    BodyText = BodyText & Cells(RR, CC).Value & " "
            Next CC
avanti:
    BodyText = BodyText & vbCrLf 'mantengo la formattazione del testo
        Next RR

    Set OutApp = CreateObject("Outlook.Application")
    'Set mobjOutlook = CreateObject("Outlook.Application")
    OutApp.Session.Logon
    Set OutMail = OutApp.CreateItem(0)

    With OutMail
        .To = EmailAddr
        .CC = "xxx@xxxxx.it ; xxxxxxx@xxxxxxxxx.it"
        .BCC = ""
        .Subject = Subj
        .Body = BodyText
        '.Attachments.Add ActiveWorkbook.FullName
        .Display 'oppure ".send" per inviare direttamente oppure "SendKeys ("%(s)"), True" per si automatico alla msgbox
    End With

'err_handler:
      'MsgBox "The code failed at line " & Erl, vbCritical
     
    Set OutMail = Nothing
    Set OutApp = Nothing
   
End Sub


Il tutto funziona, però nel corpo della mail compare solo il contenuto della prima colonna e non delle altre. Inoltre non viene mantenuta la formattazione (impostazione caratteri, bordi celle, ecc...).

Come posso risolvere?

Grazie per l'attenzione.

.theShort
theShort
Utente Junior
 
Post: 22
Iscritto il: 05/03/13 11:35

Re: EXCEL - creazione macro per invio automatico email

Postdi Flash30005 » 05/03/13 15:20

Ciao TheShort e benvenuto nel Forum

Se nel corpo della email hai solo una colonna significa che non hai nulla nella colonna B
perché questa condizione salta il ciclo for next delle colonne
Codice: Seleziona tutto
              If Cells(RR, CC).Value = "" Then GoTo avanti


Inoltre con questo sistema avrai solo un formato testo senza alcuna formattazione, il testo assumerà il font predefinito del copro email di outlook

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: EXCEL - creazione macro per invio automatico email

Postdi theShort » 06/03/13 09:24

Grazie Flash30005, ho eliminato la riga in questione ed ora nel corpo mesaggio trovo l'intera area dati.
Ora il problema è quello di riuscire ad avere la stessa formattazione o che almeno si avvicini ad essa. Così com'è ora, la mail risulta davvero poco intelligibile. Non pretendo che sia proprio uguale, ma almeno che vengano mantenute le larghezze delle celle e i bordi.
E' possibile?

.theShort
theShort
Utente Junior
 
Post: 22
Iscritto il: 05/03/13 11:35

Re: EXCEL - creazione macro per invio automatico email

Postdi Flash30005 » 06/03/13 10:35

Per mantenere una larghezza "colonna" ovvero cercare di avere il testo incolonnato nel corpo del messaggio si dovrebbe:
1) usare il carattere courier (che ha tutti i caratteri della stessa larghezza)
2) stabilire la larghezza da mantenere per tutte le stringhe (valutare la stringa max + almeno uno spazio)

Per i bordi credo che non si possa fare a meno che non pensare di salvare la riga interessata, di volta in volta, in un nuovo file salvarlo e allegarlo all'email.

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: EXCEL - creazione macro per invio automatico email

Postdi theShort » 08/03/13 10:34

Il fatto è che io avrei bisogno che quel range dati sia visibile nel testo della mail e non solo come allegato.

Un'altra idea che mi è venuta è quella di esportare l'intera area dati in una immagine e di metterla nel testo della mail.
Cercando in rete non ho trovato nulla di simile, però ho trovato dei codici che svolgono qualcosa di simile e ho provato ad riadattarli al mio caso con il seguente risultato:
Codice: Seleziona tutto
Private Sub CommandButton3_Click()

    Dim oOutlook As Object
    Dim OutApp As Object
    Dim OutMail As Object
    Dim EmailAddr As String
    Dim Subj As String
    Dim BodyText As String
    Dim dati As Range
    Dim Img1 As Chart
   
CommandButton3.Visible = False

        Set dati = Sheets(1).Range("A1:G30")
        Set Img1 = Charts.Add

        'Lettura e copia del range dati in jpg
            dati.CopyPicture
            With Img1
                .Paste
                .Export BodyText
            End With
   
 Set OutApp = CreateObject("Outlook.Application")
    'Set mobjOutlook = CreateObject("Outlook.Application")
    OutApp.Session.Logon
    Set OutMail = OutApp.CreateItem(0)

    With OutMail
        .To = EmailAddr
        .CC = "xxxxxxx@xxxxxx.it ; xxxxxx@xxxxxx.it"
        .BCC = ""
        .Subject = Subj
        .Body = BodyText
        '.Attachments.Add ActiveWorkbook.FullName
        .Display 'oppure ".send" per inviare direttamente oppure "SendKeys ("%(s)"), True" per si automatico alla msgbox
    End With

'err_handler:
      'MsgBox "The code failed at line " & Erl, vbCritical
     
    Set OutMail = Nothing
    Set OutApp = Nothing
   
Application.DisplayAlerts = False
ActiveChart.Delete
Application.DisplayAlerts = True
CommandButton3.Visible = True

End Sub


Ovviamente non funziona e immagino ci siano parecchi errori (orrori :) )

Sono sulla buona strada?

.theShort
theShort
Utente Junior
 
Post: 22
Iscritto il: 05/03/13 11:35

Re: EXCEL - creazione macro per invio automatico email

Postdi Anthony47 » 09/03/13 00:07

Una soluzione forse analoga fu discussa qui:
viewtopic.php?f=26&t=83835&start=20
(si prepara un' immagine personalizzata per ogni utente, si invia il messaggio contenente l' immagine)
L' alternativa potrebbe essere usare il "Metodo Publish" per creare un testo formattato in html da usare poi come body della mail, ci proviamo se non si risolve decorosamente con l' immagine come suggerito nella discussione a cui ti ho rimandato.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: EXCEL - creazione macro per invio automatico email

Postdi theShort » 14/03/13 12:26

Ciao Anthony47, grazie per il tuo interessamento.
Oggi sono finalmente riuscito a rimettermi dietro a questo lavoro e ho fatto un bel passo avanti.

Ho seguito la discussione che mi hai postato ed ho riadattato il codice secondo le mie necessità. Il risultato funziona, però mi ritrovo l'immagine esportata in allegato e non nel corpo della mail... Servirebbe un comando tipo ".paste.Outfile" o qualcosa del genere. E' fattibile questa cosa? Mi sono messo a cercarla in rete e mi sono imbattuto con il "Metodo Publish" da te menzionato.
Ho recuperato del codice che, una volta riadattato, ha dato i suoi frutti! :D

Mi sono creato una funzione che esporta un range dati in HTML in questo modo:
Codice: Seleziona tutto
Function RangetoHTML(rng As Range)
   
    Dim fso As Object
    Dim ts As Object
    Dim TempFile As String
    Dim TempWB As Workbook
 
    TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
 
    'Copia il range e crea una nuova cartella copiandoci i dati
    rng.Copy
    Set TempWB = Workbooks.Add(1)
       
        With TempWB.Sheets(1)
            .Cells(1).PasteSpecial Paste:=8
            .Cells(1).PasteSpecial xlPasteValues, , False, False
            .Cells(1).PasteSpecial xlPasteFormats, , False, False
            .Cells(1).Select
            Application.CutCopyMode = False
           
            On Error Resume Next
            .DrawingObjects.Visible = True
            .DrawingObjects.Delete
            On Error GoTo 0
        End With
 
        'Posiziona il foglio in un file Html
        With TempWB.PublishObjects.Add( _
            SourceType:=xlSourceRange, _
            Filename:=TempFile, _
            Sheet:=TempWB.Sheets(1).Name, _
            Source:=TempWB.Sheets(1).UsedRange.Address, _
            HtmlType:=xlHtmlStatic)
            .Publish (True)
        End With
 
    'Legge i dati contenuti in RangetoHTML
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
    RangetoHTML = ts.ReadAll
    ts.Close
    RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
                          "align=left x:publishsource=")
 
    'Chiude TempWB
    TempWB.Close savechanges:=False
 
    'Cancella il file htm usato in questa funzione
    Kill TempFile
 
    Set ts = Nothing
    Set fso = Nothing
    Set TempWB = Nothing
   
End Function


Infine l'ho richiamata per l'invio della mail:
Codice: Seleziona tutto
Private Sub CommandButton4_Click()

    Dim rng As Range
    Set rng = Nothing
    Set rng = Sheets("Scheda").Range("A1:G30").SpecialCells(xlCellTypeVisible)

    Dim OutApp As Object
    Dim OutMail As Object
    Dim EmailAddr As String
    Dim Subj As String
   
        Set OutApp = CreateObject("Outlook.Application")

            Nominat = Sheets("Scheda").Range("C5").Value
            EmailAddr = Range("E5").Value
            Subj = "Scheda di Sopralluogo - " & Nominat
       
        Set OutMail = OutApp.CreateItem(0)
       
    With OutMail
        .To = EmailAddr
        .CC = "xxxxxx@xxxx.it"
        .BCC = ""
        .Subject = Subj
        '.BodyFormat = m.HTMLBody
              'm.HTMLBody = RangetoHTML(rng)
        .HTMLBody = RangetoHTML(rng)
        .Display 'or use .send

    End With

    Set OutMail = Nothing
    Set OutApp = Nothing

End Sub


Funziona egregiamente, però mi interesserebbe anche risolvere la questione dell'immagine nel corpo della mail.
Mi sai dare qualche dritta?

Grazie!

.theShort
theShort
Utente Junior
 
Post: 22
Iscritto il: 05/03/13 11:35

Re: EXCEL - creazione macro per invio automatico email

Postdi Anthony47 » 14/03/13 23:55

Lieto di sapere che ti sei portato avanti e hai implementato il metodo Publish, risolvendo cosi' il problema.
Per quanto riguarda l' immagine in linea col testo, prova a fare una google search con la stringa
Codice: Seleziona tutto
img src cid outlook


Ci sono piu' messaggi che ne parlano; non ho trovato il tempo per collaudarli ma mi pare che sei abbastanza smaliziato.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: EXCEL - creazione macro per invio automatico email

Postdi theShort » 15/03/13 14:33

BINGO!!!

Grazie della dritta Anthony47!

Ho cercato in rete la tua stringa di codice e con quello che ho trovato ho riadattato il mio in questo modo:
Codice: Seleziona tutto
    With OutMail
        .To = EmailAddr
        .CC = "xxxxx@xxxxxx.it"
        .BCC = ""
        .Subject = Subj
        .Attachments.Add OutFile
        .HTMLBody = "<html><p>questa è l'immagine.</p>" & _
                    "<p align='Left'><img src=""cid:" & Mid(bdayimage, InStrRev(bdayimage, "\") + 1) & """>"
        .Display 'or use .send

    End With


Funziona benissimo! :)

Ora ho scoperto che, sfruttando CDO, è possibile inviare mail anche senza passare da outlook. Appena mi ci metto al lavoro, posto il codice anche di quello. :)

Grazie ancora.

.theShort
theShort
Utente Junior
 
Post: 22
Iscritto il: 05/03/13 11:35

Re: EXCEL - creazione macro per invio automatico email

Postdi Anthony47 » 15/03/13 15:57

Benissimo, sembra piu' facile del previsto...
Per quanto riguarda cdo suggerisco di non postare nessun codice; si tratta di uno strumento con cui potrebbero partire email senza che l' utente del pc ne sia pienamente conscio pertanto lo lascerei agli utenti esperti, che sanno gia' come va gestito.

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "EXCEL - creazione macro per invio automatico email":


Chi c’è in linea

Visitano il forum: Nessuno e 15 ospiti