es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Pegando múltiples gráficos de Excel uno por fila con VBA en Outlook.

Estoy intentando copiar varios gráficos de Excel en Outlook, cada uno como un mapa de bits, y cada uno en su propia linea y del mismo tamaño. El código a continuación recorre y copia cada gráfico y los pega exitosamente en Outlook como mapas de bits. Sin embargo, todos se colocan uno al lado del otro, de 1 a 3 en una fila dependiendo del tamaño. He intentado agregar vbNewLine, vbCrLF y <br>, así como otros, pero todos eliminan todos los gráficos. ¿Alguna idea de cómo poner cada gráfico en su propia línea para que estén apilados verticalmente en el correo electrónico y del mismo tamaño? Aquí está el código. Gracias de antemano:

Public Sub EmailCharts()
    Dim Sht As Excel.Worksheet
    Set Sht = ThisWorkbook.ActiveSheet

    Dim OutApp As Object
    Set OutApp = CreateObject("Outlook.Application")

    Dim outMail As Object
    Set outMail = OutApp.CreateItem(0)

    Dim vInspector As Object
    Set vInspector = outMail.GetInspector

    Dim wEditor As Object
    Set wEditor = vInspector.WordEditor

    Dim objChart As Excel.ChartObject

    With outMail
        .Display
        .to = "abc@xyz.com"
        .BCC = "abc@xyz.com"
        .Subject = "Asunto"

            For Each objChart In Sht.ChartObjects
            objChart.CopyPicture (xlBitmap)
            .HTMLBody = wEditor.Range(0, 0).Paste
            Next
    End With

    Set outMail = Nothing
    Set OutApp = Nothing
End Sub
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para obtener cada gráfico en su propia línea para que se apilen verticalmente en el correo electrónico y tengan el mismo tamaño, intenta reemplazar la línea:

    .HTMLBody = wEditor.Range(0, 0).Paste

    con:

    .HTMLBody = .HTMLBody & vbCrLf & wEditor.Range(0, 0).PasteAndFormat(wdChartPicture) & vbCrLf

    Esto agregará una nueva línea antes de cada gráfico y asegurará que estén apilados verticalmente.

Comments are closed.