come da titolo, scartabellando in stackoverflow e aggiungendo gli spunti di Anthony ho provato a costruire la macro email_testoconimmaginefirma. Sono riconoscibili alcuni spunti già usati da Anthony in risposta ad alcuni quesiti su immagini e firma in e-mail Outlook.
Premesso che le caratteristiche del mio computer sono:
Microsoft Office 2010
Microsoft Outlook 2010
Windows 7
System type: 64 bit
questa macro funziona per l'inserimento della firma (quella creata in Outlook) nel testo html dell'e-mail costituita solo da testo. La firma appare inserita formattata correttamente con colore, grassetto, come appare nella firma di Outlook. Ho pensato...Fantastico!!!
Poi, e da qui le prove con i vari spunti di Anthony ecc., ho provato ad inserire nella firma un'immagine jpeg...L'avessi mai fatto!!!
Nel file htm che Outlook crea nella directory Signature la firma appare in modo corretto (ovviamente) con l'immagine jpeg.
Ma non la prende se lascio attivo uno dei .HTMLbody (ce ne sono diversi perchè per imparare ho fatto alcune prove con varie casistiche). Quindi ho cominciato a inserire in allegato l'immagine e ho inserito l'immagine nel testo dell'e-mail (vedi spunti di Anthony). Ma nella firma non appare l'immagine jpeg. Infatti appare solo il caratteristico riquadro con la dicitura "impossibile trovare l'immagine".
Ma...Se disattivo tutti i .HTMLbody, la macro fa il display dell'e-mail con la firma completa cioè anche con la grafica.
La domanda allora è perchè? Come si può risolvere?
Pensavo infatti che fosse necessario inserire in allegato l'immagine e/o nel testo dell'e-mail non funziona.
Poi ho trovato un altro spunto di Anthony:
Per le immagini nel corpo mail, potresti allegare l' immagine (.Attachments.Add "C:\Dir\NomeImmagine.jpg") e poi inserire nel corpo della tua mail (che deve essere in html) la stringa
CODICE: SELEZIONA TUTTO
<p>NomeImmagine</p>" & "<img src='cid:NomeImmagine.jpg' height=640 width=480>"
ma non l'ho ancora provato perchè non ho capito bene come bisogna fare.
Inoltre ho visto anche il link:
viewtopic.php?t=106603
che tratta la Function RangePublish che se ho capito bene è la seguente:
- Codice: Seleziona tutto
Function RangePublish(ByVal mySh As String, ByVal PRan As String) As Variant
'Vedi http://www.pc-facile.com/forum/viewtopic.php?f=26&t=101351
'
Dim TmpFile As String, myBDT As String, PubFile
TmpFile = "C:\PROVA\" & "myBDT.htm" 'Vedi testo
'Crea file html:
With ThisWorkbook.PublishObjects.Add(SourceType:=xlSourceRange, _
Filename:=TmpFile, _
Sheet:=mySh, _
Source:=PRan, _
HtmlType:=xlHtmlStatic)
.Publish (True)
End With
quindi poi è da scrivere .HTMLBody = RangePublish("riepilogo", "Z1:AD10")
dove riepilogo è il nome del foglio excel e il range di celle è lo spazio che contiene la firma. Giusto? Per capire io, non l'ho ancora provata.
Però mi sembra strano che se apostrofo tutti gli .HTMLbody la firma appare in modo corretto con la grafica utilizzando la macro email_testoconimmaginefirma
- Codice: Seleziona tutto
Sub email_testoconimmaginefirma()
'Inserisce testo, immagine e firma in e-mail
'https://stackoverflow.com/questions/8994116/how-to-add-default-signature-in-outlook
Dim OutApp As Object
Dim OutMail As Object
Dim EmailAddr As String
Dim Subj As String
Dim BodyText As String
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
Dim Width As Long
Dim Height As Long
imgsrc = "C:\Nome_Computer\AppData\Roaming\Microsoft\Signatures\Firma_file\image001.jpg"
Width = "21600"
Align = "left"
Border = "0"
Height = "21600"
'path completo dove è contenuta la propria firma di posta nel sistema
PERCORSOFILEIMMAGINE = "C:\Nome_Computer\AppData\Roaming\Microsoft\Signatures\Firma_file\"
FILEIMMAGINE = "image001.jpg"
firme = "C:\Nome_Computer\AppData\Roaming\Microsoft\Signatures\firma.htm"
If Dir(firme) <> "" Then
signature = GetBoiler(firme)
Else
signature = ""
End If
IMMAGINE = "<html><head></head><body> " & _
"<p>Questa e' la prima parte del messaggio </p>" & _
"<img src='" & FILEIMMAGINE & "'/></b><br>" & _
"<p>E questa e' la seconda parte.... </body></html>"
With OutMail
.To = "xxxx" 'a chi e' indirizzata
.CC = "yyyy" 'per conoscenza
.Subject = "xxxxx" 'oggetto
.Attachments.Add (PERCORSOFILEIMMAGINE & FILEIMMAGINE)
.HTMLBody = "AAAAAAAAAAA" & strbody & signature
'.HTMLBody = IMMAGINE & "<BR>" & "<BR>" & "<BR>" & "<BR>" & "<BR>" & signature
'.HTMLBody = MailBody & "<br>" & .HTMLBody & signature 'allega file
'.HTMLBody = "Add body text here" & signature
.Display
End With
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
'La funzione Getboiler
Function GetBoiler(ByVal sFile As String) As String
'Dick Kusleika
Dim fso As Object
Dim ts As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.GetFile(sFile).OpenAsTextStream(1, -2)
GetBoiler = ts.readall
ts.Close
End Function