Compartir a través de

Se ha producido el error '9' en tiempo de ejecucion: Subindice fuera de intervalo.

Anónimas
2019-01-29T14:28:19+00:00

Buen día, estoy intentando desde cualquier hoja excel que tenga tomar un rago crear una imagen jpg y luego que me la pegue en mi mail. 

Pero el unico error que me surge se encuentra en esta linea "Set xRgPic = ThisWorkbook.Worksheets(SheetName).Range(xRgAddrss)",

He buscado por todos los medios pero no pude resolverlo. 

Detallo mis dos módulos donde uno crea el mail y el otro la imagen temporal. 

Desde ya muchas gracias a todos!

Sub sendMail()

        Dim TempFilePath As String

        Dim xOutApp As Object

        Dim xOutMail As Object

        Dim xHTMLBody As String

        Dim xRg As Range

        Dim asunto, enviar_a, copia_a As String

        'On Error Resume Next

        Range("a1").Activate

        Set xRg = Application.InputBox("Por favor seleccion los datos del rango:", "Creando imagen", Selection.Address, , , , , 8)

        asunto = InputBox("Escriba el asunto del mail", "Asunto del mail")

        enviar_a = InputBox("Escriba las direcciones del mail, separando por ';' ", "Enviar a:")

        copiar_a = InputBox("Escriba las direcciones del mail, separando por ';' ", "Copiar a:")

        If xRg Is Nothing Then Exit Sub

        With Application

            .Calculation = xlManual

            .ScreenUpdating = False

            .EnableEvents = False

        End With

        Set xOutApp = CreateObject("outlook.application")

        Set xOutMail = xOutApp.CreateItem(olMailItem)

        'Llamamos al modulo para crear el JPG, enviandole el nombre de la hoja que estamos (ActiveSheet.Name) y el rango (xRg.Adress).

        Call createJpg(ActiveSheet.Name, xRg.Address, "DashboardFile")

        'Tomamos la imagen temportal

        TempFilePath = Environ$("temp") & ""

        'Creamos el cuerpo del mail

        xHTMLBody = "<span LANG=EN>" _

                & "<p class=style2><span LANG=EN><font FACE=Calibri SIZE=3>" _

                & "<br>" _

                & "<img src='cid:DashboardFile.jpg'>" _

                & "<br></font></span>"

        'Abrimos el mail

        With xOutMail

            .HTMLBody = xHTMLBody

        'Adjuntamos la imagen al cuerpo del mail

            .Attachments.Add TempFilePath & "DashboardFile.jpg", olByValue

        'A quien se lo enviamos.

            .To = enviar_a

        'Con copia a:

            .Cc = copiar_a

        'Asunto del mensaje

            .Subject = asunto & Date

        'Desplegar mensaje... si estamos seguros de lo que enviamos, podemos modificar Display por Send y que se envie automaticamente el mismo.

            .Display

        End With

End Sub

Sub createJpg(SheetName As String, xRgAddrss As String, nameFile As String)

'Creando la imagen del rango en JPG.

    Dim xRgPic As Range

    'ThisWorkbook.Activate

    Worksheets(SheetName).Activate

'Seleccionamos la hoja activa con el rango que le informamos en el modulo anterior.

    Set xRgPic = ThisWorkbook.Worksheets(SheetName).Range(xRgAddrss)

'Copiamos la imagen.

    xRgPic.CopyPicture

'Con la el nombre de la hoja, detectamos los valores de cada lado y altura, y creamos de manera temporal la imagen.

    With ThisWorkbook.Worksheets(SheetName).ChartObjects.Add(xRgPic.Left, xRgPic.Top, xRgPic.Width, xRgPic.Height)

        .Activate

        .Chart.Paste

        .Chart.Export Environ$("temp") & "" & nameFile & ".jpg", "JPG"

    End With

    Worksheets(SheetName).ChartObjects(Worksheets(SheetName).ChartObjects.Count).Delete

Set xRgPic = Nothing

End Sub

Microsoft 365 y Office | Excel | Para la casa | Windows

Pregunta bloqueada. Esta pregunta se migró desde la Comunidad de Soporte técnico de Microsoft. Puede votar si es útil, pero no puede agregar comentarios o respuestas ni seguir la pregunta.

0 comentarios No hay comentarios

3 respuestas

Ordenar por: Muy útil
  1. Anónimas
    2019-01-31T20:05:51+00:00

    . . . al parecer el nombre de la hoja no parece ser el error. . .

    En la imagen, es necesario que expandas el libro  Indicador BOAPP.xlsb (signo '+' en el cuadradito). . . 

    . . .  para que se muestren los nombres de las hojas y podamos confirmar si esa es (o no) la causa del error (expandir los módulos no era necesario).

    0 comentarios No hay comentarios
  2. Anónimas
    2019-01-30T12:15:29+00:00

    Buen día, gracias por tu respuesta, agregue el comando del nombre en el primer modulo y al parecer el nombre de la hoja no parece ser el error. 

    0 comentarios No hay comentarios
  3. Anónimas
    2019-01-29T20:46:05+00:00

    . . . el único error que me surge se encuentra en esta línea "Set xRgPic = ThisWorkbook.Worksheets(SheetName).Range(xRgAddrss)",

    El error puede producirse porque el nombre que contiene la variable sheetName no coincide con el de ninguna de las hojas existentes.

    0 comentarios No hay comentarios