Insertar imagen con código html en excel

Tengo una macro en Excel para enviar correos de manera automática. He conseguido firmar los correos haciendo estos pasos:

1.-Copiar la firma en un documento Word

2.- Guardarlo como página web. (Formato HTML)

Una vez envío el correo veo que la imagen no se muestra. Sale un recuadro con una POR roja.

He intentado insertar la imagen de manera manual con código HTML pero no logro quitar el error que me sale

En HTMLBODY pongo este código:

'Variables
Const olFormatHTML As Integer = 2
Const ForReading As Integer = 1
Const TristateUseDefault As Integer = -2
Set MiPc = CreateObject("Scripting.FileSystemObject")
Set Cadena = MiPc.GetFile("H:\DIGITALITZACIONES\Expedientes tramitados\firma.htm").OpenAsTextStream(ForReading, TristateUseDefault)
firma = Cadena.ReadAll
'Esta parte esta extraida del codigo para enviar el correo. Si necesitaris alguna parte más del codigo la puedo pasar.
.HTMLBody = Msg & <IMG src=(ruta de la imagen)> & firma

y cuando pulso en cualquier parte del código me sale un error de compilación: se espera expresión. ¿No se que hago mal me podríais ayudar?

Necesitaría que 1 línea hacia arriba de la firma apareciera la imagen.

¿Alguien sabe como hacerlo? ¿O alguna alternativa para que cuando se firmen los correos salga la imagen corporativa?

1 respuesta

Respuesta
1

Hola Dante, he intentado adaptar el código a lo que tengo pero cuando pongo el _ al final de cada línea del cuerpo del mensaje me dice que el carácter no es válido. Lo he intentado de todas las maneras pero no lo consigo hacer. ¿Qué puede ser?

Puedes poner el código que adaptaste para revisarlo

Adjunto todo el código a ver cual es el error. Ahora he conseguido que me deje poner las 
_ al final del cuerpo del mensaje pero a la hora de mandar el correo no me muestra la imagen (aparece como si no encontrara la ruta) y no me sale el mensaje (parece como si me suprimiera el mensaje para insertar la imagen)

Private Sub adjuntar_Click()
hoja_1 = "Buscador"
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets(hoja_1) '
ruta = "H:\DIGITALITZACIONES\"
logo = "firma.jpg"
    libro2 = "datos.xlsm"
    hoja_2 = "Registros enviados"
    ruta2 = "H:\DIGITALITZACIONES\Expedientes tramitados"
    ruta2 = ThisWorkbook.Path & "\"
Dim OutlookApp As outlook.Application
Dim MItem As outlook.MailItem
Dim Correo As String
Dim adjunto As Variant
Dim registro As String
Dim Msg as string
Const olFormatHTML As Integer = 2
Const ForReading As Integer = 1
Const TristateUseDefault As Integer = -2
Set MiPc = CreateObject("Scripting.FileSystemObject")
Set Cadena = MiPc.GetFile("H:\DIGITALITZACIONES\Expedientes tramitados\firma.htm").OpenAsTextStream(ForReading, TristateUseDefault)
firma = Cadena.ReadAll
Set OutlookApp = New outlook.Application
        adjunto = "H:\DIGITALITZACIONES\Expedientes tramitados\Registros tramitados a les oficinas" & "\" & h1.registro_oficina.Value & "\" & h1.registro_oficina.Value & "-" & h1.registro_numero.Value & "-" & h1.registro_año.Value & "\" & h1.registro_oficina.Value & "-" & h1.registro_numero.Value & "-" & h1.registro_año.Value & " RR.pdf"
        registro = h1.registro_oficina.Value & "/" & h1.registro_numero.Value & "/" & h1.registro_año.Value
        'Cuerpo del mensaje
        '
        Msg = "Bienvenido, " &_
        "Adjunto justificante envio " & registro & "."  &_
        "Salutaciones,"
        Set MItem = OutlookApp.CreateItem(olMailItem)
        Set b = h1.Columns("N").Find(h1.registro_oficina.Value, LookIn:=xlValues, lookat:=xlWhole)
    If Not b Is Nothing Then
        With MItem
            .To = h1.Cells(b.Row, "P")
            .Subject = "Recibo " & registre & " "
            .Attachments.Add (adjunto)
            .BodyFormat = olFormatHTML
            .HTMLBody = _
                "<HTML> " & _
                    "<BODY>" & _
                        Msg & _
                        "<img src=cid:" & logo & " height=150 width=275>" & _
                    firma & _
                    "</BODY> " & _
                "</HTML>"
            '
          .Display
        End With
    End If
   correo2.Hide
End Sub

No sé qué tienes en adjunto, pero te falta agregar el archivo con el logo.

Después de esta línea:

. Attachments. Add (adjunto)

Pon esta línea:

. Attachments. Add ruta & logo

Supongo que el archivo "firma.jpg" se encuentra en la ruta "H:\DIGITALIZACIONES\"

Perfecto me funciona, ahora me inserta la imagen. Pero no ahora pasan 2 cosas:

  • No me muestra el cuerpo del mensaje (Msg)
  • Debajo de la imagen insertada hay un espacio (necesitaría quitarlo)

Después de esta línea:

"<img src=cid:" & logo & " height=150 width=275>"

Tienes esta línea, que te está poniendo el espacio.

firma & _


Intenta depurar un poco tu código. Realiza una prueba sencilla y después le vas agregando más cosas.

Por ejemplo, vamos a poner el mensaje y el logo:

Private Sub adjuntar_Click()
    ruta = "H:\DIGITALITZACIONES\"
    logo = "firma.jpg"
    Msg = "Bienvenido, Adjunto justificante envio." & _
          "Salutaciones" & "<br>"
    Set dam = CreateObject("outlook.application").createitem(olmailitem)
    With dam
        .To = "[email protected]"
        .Subject = "Recibo "
        .Attachments.Add ruta & logo
        .BodyFormat = 2
        .HTMLBody = _
            "<HTML> " & _
                "<BODY>" & _
                    Msg & _
                    "<img src=cid:" & logo & " height=150 width=275>" & _
                "</BODY> " & _
            "</HTML>"
        .Display
    End With
End Sub

Nota: Entra al menú de VBA, Herramientas, Referencias y tengas activas las siguientes.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas