Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

macro invio selezione XL su Outlook

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

macro invio selezione XL su Outlook

Postdi Making » 25/02/18 18:40

Buonasera, sto usando una macro che mi fa inviare una selezione via email in automatico. Mi chiedo se è possibile avere la formattazione del testo standard e non Times New Roman che appare sempre nella email. Inoltre vorrei aggiungere anche i destinatari in cc. Allego la macro, grazie.
-----------------------------------------------
Sub M_GeneraEmail_Day()
Dim OutApp As Object
Dim OutMail As Object
Dim indirizzo As String
Dim oggetto As String
Dim introduzione As String
Dim sh As Worksheet

Set sh = Worksheets("Main")
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

indirizzo = ""
oggetto = ""
introduzione = ""

sh.Range("b1:L100").Select
ActiveWorkbook.EnvelopeVisible = True

With sh.MailEnvelope
.Introduction = introduzione
.Item.To = indirizzo
.Item.Subject = oggetto
.Item.Send
End With

Set sh = Nothing
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
Making
Utente Junior
 
Post: 25
Iscritto il: 22/07/15 12:50

Sponsor
 

Re: macro invio selezione XL su Outlook

Postdi Anthony47 » 26/02/18 00:27

Per i destinatari in cc esiste il campo apposito (e per inciso c'e' anche il bcc); ESEMPIO
Codice: Seleziona tutto
With sh.MailEnvelope
   .Introduction = introduzione
   .Item.to = indirizzo
   .Item.cc = "aaa@dominio.it"    '<<
   .Item.bcc = "bbb@dominio.it"   '<<
   .Item.Subject = oggetto
   .Item.Send
End With


Quanto al font non credo che l'oggetto MsoEnvelope consenta la formattazione del testo; inoltre, trattandosi di messaggio di solo testo, il ricevente lo visualizzera' secondo le sue preferenze, cioe' potrebbe visualizzarlo in Arial, Courier o quello che ha impostato come carattere di default.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17054
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro invio selezione XL su Outlook

Postdi Making » 26/02/18 09:41

Grazie, purtroppo ho visto che il font arriva sul mio telefono formattato in Times New Roman che non è quello di default. Quest'altra lo fa ma non so come aggiungere la selezione di un foglio specifico. Help

--------------------------------

Sub Mail_small_Text_Outlook()

Dim OutApp As Object
Dim OutMail As Object
Dim strbody As String

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

strbody = "Hi there" & vbNewLine & vbNewLine & _
"This is line 1" & vbNewLine & _
"This is line 2" & vbNewLine & _
"This is line 3" & vbNewLine & _
"This is line 4"

On Error Resume Next
With OutMail
.To = "ron@debruin.nl"
.CC = ""
.BCC = ""
.Subject = "This is the Subject line"
.Body = strbody
'You can add a file like this
'.Attachments.Add ("C:\test.txt")
.Send 'or use .Display
End With
On Error GoTo 0

Set OutMail = Nothing
Set OutApp = Nothing
End Sub
Making
Utente Junior
 
Post: 25
Iscritto il: 22/07/15 12:50

Re: macro invio selezione XL su Outlook

Postdi Anthony47 » 26/02/18 19:34

Se vuoi usare il nuovo schema di macro, integrandolo con il contenuto di un'area del tuo foglio, devi continuare la compilazione della variabile "strbody". Ad esempio:

Codice: Seleziona tutto
'Definisci l'area da copiare nella mail:
r2Body = "A2:C5"   'ipotesi: A= descrizione, B=Valore, C=Data
'Preambolo:
strBody = "Buongiorno," & vbCrLf & "Come anticipato telefonicamente comunico non so che cosa:" & vbCrLf
'
'Calcolo max lunghezza di colonna A e colonna B
For I = 1 To Range(r2Body).Rows.Count
    If Len(Range(r2Body).Cells(I, 1)) > MaxA Then MaxA = Len(Range(r2Body).Cells(I, 1))
    If Len(Range(r2Body).Cells(I, 2)) > maxb Then maxb = Len(Int(Range(r2Body).Cells(I, 2)))
Next I
'
'Inserimento contenuto A (testo), B (valore), C (data)
For I = 1 To Range(r2Body).Rows.Count
    strBody = strBody & Range(r2Body).Cells(I, 1).Value & String(2 + MaxA - Len(Range(r2Body).Cells(I, 1).Value), " ")
    strBody = strBody & String(2 + maxb - Len(Int(Range(r2Body).Cells(I, 2))), " ") & Format(Range(r2Body).Cells(I, 2).Value, "0.00")
    strBody = strBody & "    " & Format(Range(r2Body).Cells(I, 3), "dd-mmm-yyyy")
    strBody = strBody & vbCrLf
Next I
'
'Saluti finali:
strBody = strBody & vbCrLf & "In attesa di non so cosa invio cordiali saluti"
strBody = strBody & vbCrLf & "Il suo Making"

La complicazione nasce se si vuole formattare i contenuti delle celle per renderli piu' facilmente leggibili, ed e' quello che fanno i primi due cicli For I= 1 / Next I
a) il primo ciclo calcola la lunghezza massima dei testi di colonna A e dei numeri di colonna B
b) il secondo ciclo inserisce nel testo i valori delle celle formattandoli appropriatamente:
-Campi stringa vengono resi della stessa lunghezza
-idem per i campi numerici, che vengono inoltre formattati con 2 decimali
-le date vengono formattate come gg-mmm-aaaa

Ovviamente e' solo un esempio, basato su quanto ipotizzato in testa:
- Colonna A= descrizione testuale, B=Valore numerico, C=Data

Se l'intervallo da inserire nel testo fosse piu' variegato e comunque non riuscissi ad adattare il codice precedente allora secondo me e' molto piu' semplice, rimanendo su questo secondo schema di macro, inviare una mail formattata e usare la Function RangePublish (ad esempio vedi viewtopic.php?f=26&t=101351#p586218) che consente di riportare nel testo della mail esattamente il contenuto del range.
Ma ne parleremo eventualmente se ce ne sara' bisogno.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17054
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "macro invio selezione XL su Outlook":


Chi c’è in linea

Visitano il forum: Nessuno e 33 ospiti