Ciao Federico,
La ringrazio per il codice che mi ha postato ma non ho problemi ad inviare email da codice vba, anzi il codice che ho scritto funziona perfettamente e comunque è molto più complesso di quanto lei possa immaginare, considera che è un file Excel (appunto un Workbook) che contiene un modulo VBA (con circa 700 righe di codice VBA) + tre moduli di classe + tre Window procedure che gestiscono gli eventi di tre Window (form);
Il predetto file Excel contiene lo Sheet vero e proprio in cui vengono inseriti dei dati manualmente (mediamente 350/400 righe di dati) e in funzione di questi dati vengono importati altri dati in tre colonne dello Sheet stesso che ci vengono forniti dall'azienda per cui lavoro (la procedura d'importazione è indipendente dal layout dell'origine dei dati da importare ...)
Poi sono presenti altri Sheets nascosti che contengono dati "interni" utilizzati dal codice VBA e tra questi anche lo Sheet che contiene appunto il body html dell'email che non deve essere modificato per nessun motivo, l'inserimento dei dati per la tabella riepilogativa avviene iniettando il codice HTML in una variabile stringa e l'inserimento dei dati per la tabella di riepilogo viene effettuata sulla stringa e non nel codice HTML del body delle-mail
Il codice poi non si limita solo ad importare dati e spedire e-mail esegue un controllo dei dati immessi, individua e corregge automaticamente gli errori ed eventuali dati duplicati ridondanti, in particolare verifica la correttezza dei dati immessi manualmente in alcune colonne che sono dei codici che hanno un ben preciso formato e un ben preciso significato ... (per darle un'idea pensi per esempio al codice fiscale che non è una banale stringa ...)
Infine il codice esporta / estrapola in un file Excel a parte lo Sheet completo dei dati immessi e importati depurandolo dal codice vba incapsulato; questo viene poi allegato all'email che lo stesso codice VBA genera automaticamente inserendo nel body la tabella riepilogativa formata da 20 righe, 5 colonne e un' head
Tutto questo funziona alla perfezione il problema è solo la tabella riepilogativa nel body dell'email :
Se uso direttamente il metodo Send dell'oggetto objEMail (objEMail.Send) la tabella viene disegnata nel body esattamente come prestabilito e i destinatari la ricevono esattamente come ho prestabilito
Se invece uso il metodo .Display (objEMail.Display), cosa che mi serve perché alle volte ci capita di aggiungere brevi note nel body dell'email, note che è impossibile automatizzare, l'anteprima dell'email altera alcuni attributi dei bordi e degli sfondi delle celle della tabella e i destinatari ricevono la tabella con gli attributi alterati. Non è questo un problema in quanto è solo una questione estetica ma non capisco perché Outlook mi debba cambiare gli attributi di stile della tabella
Forse con delle immagini riesco a spiegarmi meglio ....
Con il metodo Send l'invio è automatico e la tabella nel body è ricevuta dai destinatari esattamente come prestabilito:

Con il metodo Display (che è quello che mi serve ... bla ... bla) l'anteprima altera lo stile della tabella, l'invio deve essere comandato manualmente e i destinatari ricevono la tabella come in figura con gli attributi di stile (soprattutto dei bordi) alterato ....

.
La complessità del tuo progetto non mi spaventa e posso assicurarti che ho creato e gestito progetti più grandi e complessi.
Detto questo, indipendentemente dalle dimensioni o dalla complessità del progetto, dovrebbe essere un compito relativamente semplice trasmettere i dati richiesti, comprese le caratteristiche del formato, al codice di invio e-mail standard.
Nel caso del codice che ho pubblicato, ciò si ottiene passando l'indirizzo della tabella dati alla funzione RangetoHTML. Il codice originale di questa utile funzione è stato, credo, pubblicato da Dick Kusleika e successivamente aggiornato da Ron de Bruin. Come ho dimostrato, questo approccio crea il corpo formattato richiesto sia per l'email finale ma anche la sua anteprima.
Niente nella tua spiegazione dettagliata mi suggerisce che non potresti sfruttare un approccio simile. Non vedo motivo per cui, a prescindere dalla complessità o meno della creazione della stringa che rappresenta l'indirizzo dei dati del corpo dell'email, non si dovrebbe riuscire a passare questa stringa alla funzione RangetoHTML e ottenere risultati analoghi a quelli mostrati in l'immagine inclusa nella mia risposta precedente.
Senza il codice completo e un file di esempio è estremamente difficile spiegare perché tu non riesci a ottenere un'anteprima adeguatamente formattata per la email, ma suggerirei che potrebbe essere più rapido e semplice adottare l'approccio che l'approccio che ho suggerito e che ha funzionato con successo per me in innumerevoli occasioni.
Naturalmente, è sempre possibile che otterrai comunque risultati deludenti se usi il mio approccio. Tuttavia, non lo saprai se non lo proverai e, anche se ciò accadesse, avrei comunque bisogno di una copia della tua tabella dati per indagare sulla questione.
Per la completezza, creando una tabella simile a la tua, e utilizzando il mio codice, ottengo come anteprima :
[
.
e l'email che ho ricevuto era:
[
.
===
Regards,
Norman
