› Sviluppare funzionalita su Microsoft Office con VBA › Salva file con Nome (dati presi da celle diverse) sia in excel che PDF
-
AutoreArticoli
-
ok assodato che mi serve l'html per emulare sottolineature e grassetti niente di piu. avrei trovato un sito che sviluppa il codice html che sarebbe questo: ma naturalmente sto trovando difficoltà nell'inserirlo nel codice. insomma ho praticamente finito il file ma sta cosa non mi riesce. consigli? testo html in allegato
Allegati:
You must be logged in to view attached files.Ero sicuro che per una presentazione professionale ti serviva la formattazione del testo, sapevo che volevi l'approfondimento 🙂
Rimane valido il consiglio di scrivere il testo html in una cella e poi prelevarne il contenuto per affidarlo alla proprietà .HTMLBody (in un mio progetto ho creato nna casella di testo in cui ho inserito il codice html, la sostanza non cambia affatto, ti consiglio una cella perchè è più semplice prelevarne il contenuto).
In pratica è il mio consiglio numero 3 del post precedente solo che assegni il contenuto della cella a .HTMLBody invece che .TextBody.
Prendi quindi tutto il tuo codice html e lo metti (poniamo) nella cella N50 del foglio Input, poi nel codice che prepara la mail lo assegni alla proprietà giusta:
.HTMLBody = wb1.Worksheets("Input").Range("N50").ValuePrendi quindi tutto il tuo codice html e lo metti (poniamo) nella cella N50 del foglio Input, poi nel codice che prepara la mail lo assegni alla proprietà giusta:
.HTMLBody = wb1.Worksheets("Input").Range("N50").Valueok allora funziona. pero devo togliere wb1.
ora che ho inviato l'email mi sono accorto di 2 cose penso semplici:
il mittente deve avere un nome standard tipo: Fabrizio
e poi serve la firma automatica che utilizza gmail
pero devo togliere wb1.
Ma il testo lo metti nel file principale no? non era stato referenziato come wb1?
Il nome mittente lo puoi mettere nel campo .From con l'indirizzo originale tra parentesi angolari:
.From = "Fabrizio <mail@gmail.com>"La firma la devi inserire nel testo html. Crea una mail vuota con la firma, poi copiala in fondo al HTMLBody formattandola opportunamente.
ok funziona tutto. ultima cosa e penso di aver finito. accanto al nome del mittente in gmail compare un logo è possibile riprodurlo? allego
Allegati:
You must be logged in to view attached files.Naturalmente intendi nel corpo della mail, non nel nome che finisce nel campo del mittente 🙂
Sì credo che sia possibile. Non l'ho mai fatto nei miei progetti perchè non mi serve (avendo solo destinatari interni all'Azienda), ma credo che si tratti solo di impostare un tag img src.Mi informerò appena rientro in ufficio (sono in pausa pranzo) ma se nel frattempo qualcuno sta leggendo e conosce la risposta, può offrirla (questa non è una conversazione privata anche se sembra 🙂
accanto al nome del mittente in gmail compare un logo
Se ti riferisci all'immagine che compare quando mandi un messaggio, se il codice invia la mail da un indirizzo di posta gmail, dovrebbe inserire l'immagine associata all'account gmail mittente. Non ti resta che fare qualche prova 🙂
provo e ti aggiorno per ora ho fatto prove solo con email personale. grazieeeeee
ti aggiorno
Sì, ci tengo a sapere come finisce. Finora mi sembra che abbiamo raggiunto un buon risultato dal momento che hai scritto:
ok funziona tutto

ottimi risultati. ho tolto molto lavoro di mezzo o meglio ne faccio di più in meno tempo. grazie tante e ti aggiorno.
ne faccio di più in meno tempo
Ci sono aspetti positivi:
fatti dare un aumento di stipendio da tuo Capo o, se il Capo sei tu, concedi l'aumento di stipendio ai tuoi collaboratori perché saranno più produttivi
ciao vecchio frac,
scusa ma in questi giorni sono stato un po' impicciato.
Ti ringrazio di tutto il file lavora correttamente in tutte le sue parti e davvero senza il tuo aiuto non avrei saputo dove sbattere la testa.
Grazie ancora
Bene! Grazie del feedback.

'Set All Email Properties With NewMail .From = "Nome Cognome <la_tua_email@dominio.it>" ' fa apaprire Nome e Cognome nella mail .To = Worksheets("Input").Range("B5").Value .CC = "" .BCC = "la_tua_email@dominio.it" ' invia una copia a me stesso per tener traccia della mail inviata
vecchio frac ancora una mano in questa regola:
.To = Worksheets("Input").Range("B5").Value
se volessi inviare email ad una colonna filtrata ad es. Colonna B che contiene più righe ma che sono state filtrate in base ad alcuni criteri. insomma di tutti gli indirizzi presenti nella colonna B deve inviare email solo a quelli risultanti dal filtro
ti allego il codice vba funzionante eliminando alcune info sensibili
Option Explicit 'For Early Binding, enable Tools > References > Microsoft CDO for Windows 2000 Library Sub SendEmailUsingGmailStandard() Dim NewMail As Object Dim mailConfig As Object Dim fields As Variant Dim msConfigURL As String 'late binding Set NewMail = CreateObject("CDO.Message") Set mailConfig = CreateObject("CDO.Configuration") ' load all default configurations mailConfig.Load -1 Set fields = mailConfig.fields 'Set All Email Properties With NewMail .From = "" .To = Worksheets("Input").Range("B5").Value .CC = "" .BCC = "" ' destinatario nascosto - gmail non salva in posta inviata quindi bisogna trovare un modo per salvare il messaggio inviato .Subject = "" .HTMLBody = Worksheets("Modelli").Range("A2") ' regola per corpo mail html da prendere da cella e foglio .AddAttachment Worksheets("Input").Range("N45").Value 'regola per prendere allegato dal percorso salvato in cella N45 End With msConfigURL = "http://schemas.microsoft.com/cdo/configuration" With fields .Item(msConfigURL & "/smtpusessl") = True 'Enable SSL Authentication .Item(msConfigURL & "/smtpauthenticate") = 1 'SMTP authentication Enabled .Item(msConfigURL & "/smtpserver") = "smtp.gmail.com" 'Set the SMTP server details .Item(msConfigURL & "/smtpserverport") = 465 'Set the SMTP port Details .Item(msConfigURL & "/sendusing") = 2 'Send using default setting .Item(msConfigURL & "/sendusername") = "" 'Your gmail address .Item(msConfigURL & "/sendpassword") = "" ' password generata da gmail per app terzi .Update 'Update the configuration fields End With NewMail.Configuration = mailConfig NewMail.Send End Subgrazie mille per l'aiuto
insomma di tutti gli indirizzi presenti nella colonna B deve inviare email solo a quelli risultanti dal filtro
Ho capito, ti devi interessare sul metodo SpecialCells dell'oggetto Range(B:B), il quale può evidenziare le sole celle visibili di un intervallo filtrato. Prova a dare un'occhiata alla guida o in Google, poi stasera se riesco sarò più dettagliato. Adesso non posso, purtroppo ho un lavoro lungo da finire 🙂
Tranquillo ci mancherebbe. Do un occhiata tu quando puoi se riesci mi aiuti anche sull'altro post non riesco a capire l'errore sull'aggiornamento da dove viene
Grazie ancora
'seleziona le celle visibili del range B2:B10 Range("B2:B10").SpecialCells((xlCellTypeVisible).SelectIn pratica SpecialCells funziona così: dato un range, seleziona le celle "speciali" di quel range, dove la specialità è indicata da un parametro che devi passare a SpecialCells; i parametri appaiono nell'editor di VBA appena digiti la parentesi dopo SpecialCells. In questo caso (dove le righe sono filtrate e quindi alcune sono nascoste alla vista), vogliamo un riferimento alle sole celle visibili perché poi dobbiamo recuperarne il valore. Il parametro che ci interessa è xlCellTypeVisible.
Sub SendEmailUsingGmailStandard() Dim s as String Dim r as Range dim v as Variant . . . ' Set all email properties With NewMail .From = "..." ' recuperiamo il contenuto delle celle visibili da B2 in poi Set r = Range(Range("B2"), Range("B2").End(xlDown)).SpecialCells(xlCellTypeVisible) ' e lo assegniamo alla variabile s, dobbiamo scandire cella per cella del range filtrato For Each v in r s = s & v & "; " ' gli indirizzi sono separati da punto e virgola Next s = Left$(s, Len(s)-1) ' infine assegniamo al campo mail To il valore della variabile s che contiene i destinatari .To = s . . . End SubHo indicato solo le modifiche (aggiunte) da fare al codice. Il resto è invariato.
Gli indirizzi inseriti in colonna B dovrebbero essere inseriti correttamente nel campo del destinatario mail, separati da punto e virgola (se per caso Gmail non accetta il punto e virgola ma vuole la virgola, vedi bene dove fare la modifica).
Dovrebbe essere sufficiente 🙂 -
AutoreArticoli
