Questo post riporta un aggionamento dell'articolo di analogo argomento, di cui si indica il link:
http://blog.shareoffice.it/giannigiaccaglini/articles/6440.aspx
A beneficio di chi avesse già letto la versione precedente di tale articolo nonché... delle persone pigre ecco comunque il testo aggiunto.
Formattazione del Body di una replica (soluzione parziale)
Nella risposta a un messaggio selezionato (nell'elenco degli arrivi) non sembra possibile ottenere la formattazione del corpo (Body), per il semplice motivo che la proprietà Body è una stringa. Difficoltà possono nascere persino quando si tenta di incollare tramite macrocodice nel corpo della replica (come pure di un nuovo messaggio) materiale copiato da un documento Word (cosa che funziona regolarmente nell'uso manuale).
Pensa e ripensa un ripiego c'è, espresso anzitutto da una routine del tipo seguente
Sub BodyFormattato()
Dim WordDoc As Word.Document, TestoDoc As String
Set WordDoc = _
GetObject("C:\Documenti\DocStandard.doc")
With WordDoc
.Select
Selection.Copy
.Close
'.Parent.Quit 'QUI DA' ERRORE, DIO SA PERCHE'...
End With
Set WordDoc = Nothing
Dim MioMess As MailItem
Set MioMess = Application.CreateItem(olMailItem)
'Istruzione facoltativa (promemoria all’utente):
'MsgBox "Ctrl+V per inserire testo formattato"
With MioMess
.BodyFormat = olFormatRichText 'Imposta il formato RTF
.To = ""
.Body = " "
.Display 'Mostra la letterina, senza ancora spedirla
End With
ActiveDocument.Range.Paste
Set MioMess = Nothing
End Sub
La scappatoia, come gran parte degl’interessati dovrebbero comprendere, consiste nell’istruzione semifinale ActiveDocument.Range.Paste che agisce nel documento attivo, ove adesso in ballo c’è Word.
Approfittando di questa scoperta, ecco poi una Sub che la applica a un messaggio “replicato”, ovvero che sfrutta il metodo Reply:
Nota – Invito a studiare, e sperimentare, anche ReplyAll...
Sub RispAunMessFormattato()
'Con inserimento del testo di un documento
'Word nel BODY della replica (Reply)
Dim Nms As Outlook.NameSpace
Set Nms = Application.GetNamespace("MAPI")
Dim OlSel As Outlook.Selection
Dim Mess As String, PercorsoAllegati As String
PercorsoAllegati = "C:\Documenti\"
Dim CartellAttiva As String
Dim iMess As Integer, Mittente As String
CartellAttiva = ActiveExplorer.CurrentFolder.Name
If CartellAttiva <> "Posta in arrivo" Then
Mess = "Questa routine ha senso e funziona" & vbLf & _
"solo se è attiva la Posta in arrivo!"
MsgBox Mess, vbInformation, "Cartella attiva: " & CartellAttiva
Set ActiveExplorer.CurrentFolder = _
Nms.GetDefaultFolder(olFolderInbox)
Exit Sub
End If
Set OlSel = ActiveExplorer.Selection
On Error Resume Next 'Ignora i messaggi privi di mittente
'(es. segnalazioni del provider di utenti sconosciuti)
Dim WordDoc As Word.Document, TestoDoc As String
Set WordDoc = _
GetObject(PercorsoAllegati & "DocStandard.doc")
With WordDoc
.Select
Selection.Copy
.Close
.Parent.Quit
End With
Set WordDoc = Nothing
With OlSel.Item(1) 'Risposta a un solo messaggio, per semplicità
Mittente = .SenderName
With .Reply 'Restituisce un messaggio di replica
'.Body = "Hi " & Mittente & vbLf & vbLf & TestoDocSet
.BodyFormat = olFormatRichText
.Display
'Chiedi all’utente se vuol spedire subito o rimandare
If Msgbox("Vuoi che spedisco il messaggio", VbYesNo) = VbYes Then
.Send
End If
End With
End With
Set OlSel = Nothing: Set Nms = Nothing
End Sub
Questo è tutto, gente.
?>