Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Inserimento testo, immagine e firma con immagine in e-mail

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

Inserimento testo, immagine e firma con immagine in e-mail

Postdi EnricoBanco » 01/09/17 00:59

Ciao a tutti,

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

EnricoBanco
Utente Junior
 
Post: 74
Iscritto il: 18/07/17 06:29

Sponsor
 

Re: Inserimento testo, immagine e firma con immagine in e-ma

Postdi EnricoBanco » 01/09/17 01:38

Dimenticavo, la macro email_testoconimmaginefirma viene lanciata da excel
EnricoBanco
Utente Junior
 
Post: 74
Iscritto il: 18/07/17 06:29

Re: Inserimento testo, immagine e firma con immagine in e-ma

Postdi Anthony47 » 01/09/17 14:32

Non ho OL2010 (solo OL2003, poi OL2013/2016), quindi non posso testare la tua situazione.
Comunque la firma deve essere predisposta in Outlook e da Outlook viene inserita appena crei poi una mail; lo troverai nell' htmlBody iniziale.
Mi pare invece che tu stai cercando di creare un tuo testo email a cui vuoi aggiungere un altro testo con immagine, che pero' significa voler fare cose che Outook gia' fa di suo.
Quindi il mio suggerimento e':
-crea su Outlook la firma, con quello che vuoi metterci dentro
-poi in fase di composizione del testo email recupera htmlBody della firma e accodalo all' htmlbody del tuo testo. Cioe':
Codice: Seleziona tutto
    With OutMail
        .HTMLBody = IlTuoTesto & "<br><br><br>" & .HTMLBody
'etc etc
'
        .Display
    End With

La prima parte del tuo codice non so a che serve, decidi tu se deve rimanere o no.

Se IlTuoTesto lo ottieni con RangePublish allora la riga sara'
Codice: Seleziona tutto
        .HTMLBody = RangePublish("riepilogo", "Z1:AD10") & "<br><br><br>" & .HTMLBody

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

Re: Inserimento testo, immagine e firma con immagine in e-ma

Postdi EnricoBanco » 01/09/17 22:14

Ok, grazie mille, provo
EnricoBanco
Utente Junior
 
Post: 74
Iscritto il: 18/07/17 06:29

Re: Inserimento testo, immagine e firma con immagine in e-ma

Postdi EnricoBanco » 02/09/17 22:53

Ciao,

allora volevo capire:
Filename:=TmpFile, _ sarebbe la firma perchè si riferisce al file htm
Sheet:=mySh, _ è il foglio dove si trova il range del testo che nell'esempio è chiamato "riepilogo"
Corretto?

Non mi è chiaro però questo:
.HTMLBody = RangePublish("riepilogo", "Z1:AD10") & "<br><br><br>" & .HTMLBody
il secondo .HTMLBody a cosa si riferisce? E' il testo dell'e-mail?
Z1:AD10 contiene la firma?
Quindi mi sfugge qualcosa mi sa.

Grazie di tutto
EnricoBanco
Utente Junior
 
Post: 74
Iscritto il: 18/07/17 06:29

Re: Inserimento testo, immagine e firma con immagine in e-ma

Postdi Anthony47 » 03/09/17 21:58

Il secondo HTMLBody rappresenta ...la firma.

Con la tua Set OutMail = OutApp.CreateItem(0) tu crei una email; se hai impostato IN OUTLOOK una firma, la firma e' ora visibile nella tua email.
Ne potresti leggere il contenuto con
Codice: Seleziona tutto
Pippo = OutMail.HTMLBody


Il testo della tua mail non so dove e'; supponiamo che lo generi con la RangePublish, allora potresti compilare l'email con il tuo testo + la firma com
Codice: Seleziona tutto
OutMail.HTMLBody = RangePublish("riepilogo", "Z1:AD10") & "<br><br><br>" & Pippo


Oppure, condensato, con l'istruzione che ti avevo suggerito:
Codice: Seleziona tutto
OutMail.HTMLBody = RangePublish("riepilogo", "Z1:AD10") & "<br><br><br>" & .HTMLBody


Se il resto della macro serviva per mettere la firma allora per me non serve, perche' la firma la mette gia' Outlook.

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

Re: Inserimento testo, immagine e firma con immagine in e-ma

Postdi EnricoBanco » 05/09/17 11:00

Ciao,
grazie mille. Allora ho inserito in Z1:AD10 un testo formattato in un certo modo congrasseto, corsivo, ecc..
Poi ho inserito la Function RangePublish nel codice e come "testo e-mail" le stringhe da te proposte nella tua risposta del 3/9. Crea correttamente il file htm con quanto inserito in Z1:AD10 ma non lo riporta nel testo dell'e-mail. Non da nessun msg di blocco.
Cosa sbaglio?
EnricoBanco
Utente Junior
 
Post: 74
Iscritto il: 18/07/17 06:29

Re: Inserimento testo, immagine e firma con immagine in e-ma

Postdi EnricoBanco » 05/09/17 11:01

Le stringhe in alternativa come mi hai suggerito
EnricoBanco
Utente Junior
 
Post: 74
Iscritto il: 18/07/17 06:29

Re: Inserimento testo, immagine e firma con immagine in e-ma

Postdi Anthony47 » 06/09/17 01:27

In Outlook ho creato una firma con immagine (Menu /File /Opzioni /Posta, Firma).

Poi in Excel ho usato questa macro:
Codice: Seleziona tutto
Sub Invioemail()
Dim OutApp As Object, OutMail As Object
Dim EmailAddr As String, Subj As String
'
'DA QUI SI CREA E INVIA LA MAIL:
Set OutApp = CreateObject("Outlook.Application")
EmailAddr = "TuaEmail@Dominiozczc.Com"                  '<<< INDIRIZZO EMAIL
Subj = "Scadenze del " & Format(Date, "yyyy-mmm-dd")    '<<< OGGETTO DELLA MAIL
Set OutMail = OutApp.CreateItem(0)
With OutMail
    .display
    .to = EmailAddr
    .CC = ""
    .BCC = ""
    .Subject = Subj
Stop
    .htmlBody = RangePublish("Foglio1", "A1:E10") & "<br><br> " & .htmlBody
    .display 'or use .send
Stop
    .send
End With
'  (c)
Application.Wait (Now + TimeValue("0:00:01"))
Set OutMail = Nothing
'  (d)
Set OutApp = Nothing
'
End Sub

Al primo Stop si vede che la mail e' stata predisposta, ed e' presente la firma con immagine:

Immagine


Al secondo Stop si vede che la mail ora contiene anche il testo presente nel range "A1:E10" di Foglio1.

Immagine


Continuando la macro (con F5) la mail viene spedita; completato il debug i due Stop possono essere eliminati, idem i due .Display (se si preferisce non visualizzare la mail)

Questo uso io e pare che funzioni.

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

Re: Inserimento testo, immagine e firma con immagine in e-ma

Postdi EnricoBanco » 06/09/17 11:43

Grazie mille, provo
EnricoBanco
Utente Junior
 
Post: 74
Iscritto il: 18/07/17 06:29

Re: Inserimento testo, immagine e firma con immagine in e-ma

Postdi EnricoBanco » 06/09/17 17:09

Ciao,
crea l'e-mail con la firma ma non inserisce il contenuto htm nell'e-mail.
Mi viene da pensare che sia Outlook 10 che non "legge" la RangePublish.
Ma la RangePublish è veramente utile, quindi faccio altre prove...
EnricoBanco
Utente Junior
 
Post: 74
Iscritto il: 18/07/17 06:29

Re: Inserimento testo, immagine e firma con immagine in e-ma

Postdi Anthony47 » 07/09/17 00:47

Non ho OL2010, ma ricordo che la RangePublish la usavo anche su OL2003, e la uso su OL2016

Quale e' il codice che usi?
Avatar utente
Anthony47
Moderatore
 
Post: 17648
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Inserimento testo, immagine e firma con immagine in e-ma

Postdi EnricoBanco » 08/09/17 22:21

Ciao,
sto provando con questo
EnricoBanco
Utente Junior
 
Post: 74
Iscritto il: 18/07/17 06:29

Re: Inserimento testo, immagine e firma con immagine in e-ma

Postdi EnricoBanco » 08/09/17 22:21

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
End Function
EnricoBanco
Utente Junior
 
Post: 74
Iscritto il: 18/07/17 06:29

Re: Inserimento testo, immagine e firma con immagine in e-ma

Postdi EnricoBanco » 08/09/17 22:33

Allora dopo due giorni di estenuanti prove ;o)
Sulla "Sub Invioemail", se uso solo la RangePubblic non mi funziona cioè non mi aggancia il testo inserito nel range di celle. Allora ho provato a combinare le due funzioni RangePubblic e GetBoiler (GetBoiler utilizzata nella macro: email_testoconimmaginefirma).
Se tolgo "signature" non funziona ma se lo inserisco funziona. Ho fatto altre prove cambiando il range di celle che poi crea il contenuto del file "Testo.htm" ma mi da questo problema: ripetendo le prove alternando il contenuto del file testo.htm con il testo1 (testo1: testo da inserire nell'e-mail) e testo2 (testo2: testo da inserire nell'e-mail). Se il testo2 è "attivo" cioè la macro lo lavora per inserirlo nel file testo.htm al primo lancio mette in e-mail il testo1 cioè è come se ci fosse un copia-incolla ancora attivo del contenuto del testo precedente in memoria. Non so se mi sono spiegato. Mentre al secondo lancio tutto ok e ovviamente inserisce anche la firma in modo corretto
EnricoBanco
Utente Junior
 
Post: 74
Iscritto il: 18/07/17 06:29

Re: Inserimento testo, immagine e firma con immagine in e-ma

Postdi EnricoBanco » 08/09/17 22:34

Codice: Seleziona tutto
Dim OutApp As Object, OutMail As Object
Dim EmailAddr As String, Subj As String

 firme = "C:\EnricoBanco\Desktop\Dir\Testo.htm"
    If Dir(firme) <> "" Then
        signature = GetBoiler(firme)
    Else
        signature = ""
    End If

'DA QUI SI CREA E INVIA LA MAIL:
Set OutApp = CreateObject("Outlook.Application")
EmailAddr = "EnricoBanco@enricobanco-email.it"         '<<< INDIRIZZO EMAIL
Subj = "Scadenze del " & Format(Date, "yyyy-mmm-dd")    '<<< OGGETTO DELLA MAIL
Set OutMail = OutApp.CreateItem(0)
With OutMail
    .Display
    .To = EmailAddr
    .CC = ""
    .BCC = ""
    .Subject = Subj
   
     
   
'Stop
     .HTMLBody = "<table align=left>" & RangePublish("Foglio1", "Z1:AD10") & signature & .HTMLBody
    .Display 'or use .send
'Stop
    '.Send
End With
'  (c)
Application.Wait (Now + TimeValue("0:00:01"))
Set OutMail = Nothing
'  (d)
Set OutApp = Nothing
'
End Sub

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:\EnricoBanco\Desktop\Dir\Testo.htm\" & "Testo.htm"       'Vedi testo
'Crea file html:
With ThisWorkbook.PublishObjects.Add(SourceType:=xlSourceRange, _
    Filename:=TmpFile, _
    Sheet:=mySh, _
    Source:=PRan, _
    HtmlType:=xlHtmlStatic)
    .Publish (True)
End With
End Function

Function GetBoiler(ByVal sFile As String) As String
    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
EnricoBanco
Utente Junior
 
Post: 74
Iscritto il: 18/07/17 06:29

Re: Inserimento testo, immagine e firma con immagine in e-ma

Postdi EnricoBanco » 08/09/17 22:40

Questo è il codice cioè ho preso il codice che Anthony ha postato sopra e ci ho fatto le varie prove.
Allora ho lasciato solo la GetBoiler e ho registrato tre macro.
macro excel che apre file word vuoto dove incollare un testo con la firma e salvare il file "Testo.htm" tramite macro Word. La macro Word ha il vantaggio che allinea il testo "a sinistra" quindi correttamente nell'e-mail.
Due in excel: una per aprire il file word e un'altra per salvare direttamente da excel (magari può essere utile) il contenuto nel file Testo.htm. Di seguito il codice
EnricoBanco
Utente Junior
 
Post: 74
Iscritto il: 18/07/17 06:29

Re: Inserimento testo, immagine e firma con immagine in e-ma

Postdi EnricoBanco » 08/09/17 22:49

Codice: Seleziona tutto
Sub Testo_per_email_macro_excel()
'Apre file word da excel che contiene macro per salvare file in htm
'Il file salvato presenta testo allineato a sinistra in modo corretto per invio e-mail
    Dim WordApp As Object
    Set WordApp = CreateObject("Word.Application")
    WordApp.Documents.Open "C:\Users\00220420\Desktop\Invio elenco e-mail con file allegato - Macro VBA Excel\Testo_per_email.docx"
    WordApp.Visible = True
    Set WordApp = Nothing
End Sub


Sub Salva_Pagina_Web_macro_excel()
' Salva_Pagina_Web Macro
' Scelta rapida da tastiera: CTRL+w
    With ActiveWorkbook.PublishObjects.Add(xlSourceSheet, _
        "C:\Users\00220420\Desktop\Invio elenco e-mail con file allegato - Macro VBA Excel\Testo.htm" _
        , "Foglio2", "", xlHtmlStatic, _
        "Invio elenco e-mail con file allegato - Macro VBA Excel_10764", "")
        .Publish (True)
        .AutoRepublish = True
    End With
End Sub


Sub Macro1()
' Macro1 Macroin Word
    ChangeFileOpenDirectory _
        "C:\Users\Windows7\Desktop\Documentazione\Visual Basic\VBA Outlook\"
    ActiveDocument.SaveAs2 FileName:="Testo.htm", FileFormat:= _
        wdFormatHTML, LockComments:=False, Password:="", AddToRecentFiles:=True, _
        WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
         SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
        False, CompatibilityMode:=0
    ActiveWindow.View.Type = wdWebView
End Sub
EnricoBanco
Utente Junior
 
Post: 74
Iscritto il: 18/07/17 06:29

Re: Inserimento testo, immagine e firma con immagine in e-ma

Postdi EnricoBanco » 08/09/17 22:57

Il file Testo.htm che viene generato direttamente dalla macro excel alliena al centro il contenuto del Foglio2 nel file testo.htm quindi facendo alcune prove questo codice:

"<table align=left>"

allinea correttamente il contenuto del fle "Test.htm" nell'e-mail.

Quindi conclusioni, dalle prove è emerso che:
tutto questo processo che utilizza le due macro di appoggio e la GetBoiler funziona con Outlook10. Ma anche se nel file Testo.htm viene riportato un elemento grafico dove appare correttamente scaricato con la macro excel o con la macro word poi l'elemento grafico non viene riportato nel testo dell'e-mail (neanche con con la RangePubblic) cioè sembra che un elemento grafico non venga letto da Outlook10 pur essendo presente in un file htm.
Penso inoltre che Outlook10 non riesca a "leggere" la RangePubblic in modo corretto per quanto esposto sopra.

Grazie Anthony, anche in questa occasione ho imparato tantissimo!!! ;o)
EnricoBanco
Utente Junior
 
Post: 74
Iscritto il: 18/07/17 06:29

Re: Inserimento testo, immagine e firma con immagine in e-ma

Postdi Anthony47 » 08/09/17 23:29

Ma il codice della RangePublish che usi e' monco...
Dalla discussione citata, cioe' Vedi viewtopic.php?f=26&t=101351, il codice completo e':
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 = Environ("Temp") & "\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
'
Set FSO = CreateObject("Scripting.FilesystemObject")
Set PubFile = FSO.OpenTextFile(TmpFile, 1, False)
  RangePublish = PubFile.ReadAll
PubFile.Close
'
End Function

Come vedi mancherebbe (nel codice che hai in uso) la parte finale che restituisce il codice html dell'intervallo "pubblicato"

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

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Inserimento testo, immagine e firma con immagine in e-mail":


Chi c’è in linea

Visitano il forum: Nessuno e 20 ospiti