Error de ejecución en vba

Estoy generando un archivo desde excel para envío de correos masivos con archivo adjunto, me funciona en mi computador de escritorio, pero el portátil no me funciona, ambos equipos tienen office 2010. El error que me genera es el siguiente: Se ha producido error 2147417851 (80010105) en tiempo de ejecución. Error en el método "to" de objeto ´_Mailitem´.

3 respuestas

Respuesta
1

.

Buenas, Diego

Sin poder ver la instrucción que provoca el error, pareciera que sólo se trata de un error de redacción. Ese "to" puede ser que esté separado o no corresponda.

Debería tener una sintaxis como esta:

CreateItem(olMailItem)

Pero claro, depende de la línea completa.

Si eventualmente, revisando cómo está escrita la sentencia que acompaña a _Maiitem, no lograras encontrar el origen del problema, pega aquí la línea o líneas donde se detiene la macro.

Cuando se detiene por ese error, presiona "Depurar" y copia la linea en amarillo.

Espero que puedas dilucidarlo.

Abrazo

Fernando

.

Respuesta
1

Sin el archivo o parte del código para revisar lo más seguro es...

Si funciona en escritorio pero en lap:

1 Error en las rutas de los archivos adjuntos

2 Aunque sea la misma versión del office podría ser una diferente acctualizacion (esto casi imposible que afecte pero se puede dar el caso que detecte diferente un objeto o instrucción)

3 que el texto que estas convirtiendo a contacto tenga algún valor extraño y no lo este comprendiendo como una cadena string correctamente.

Buenos días, este es el código con el que estoy trabajando.

Sub correo()

col = Range("H1").Column
For i = 2 To Range("B" & Rows.Count).End(xlUp).Row
Set dam = CreateObject("outlook.application").createitem(0)
dam.To = Range("B" & i) 'Destinatarios
dam.CC = Range("C" & i) 'Con copia
dam.Bcc = Range("D" & i) 'Con copia oculta
dam.Subject = Range("E" & i) '"Asunto"
dam.body = Range("F" & i) '"Cuerpo del mensaje"
'
For j = col To Cells(i, Columns.Count).End(xlToLeft).Column
archivo = Cells(i, j)
If archivo <> "" Then dam.Attachments.Add archivo
Next
dam.send 'El correo se envía en automático
'dam.display 'El correo se muestra
Next
MsgBox "Correos enviados", vbInformation, "SALUDOS"
End Sub

Buenos días, este es el código con el que estoy trabajando.

Sub correo()

col = Range("H1").Column
For i = 2 To Range("B" & Rows.Count).End(xlUp).Row
Set dam = CreateObject("outlook.application").createitem(0)
dam.To = Range("B" & i) 'Destinatarios
dam.CC = Range("C" & i) 'Con copia
dam.Bcc = Range("D" & i) 'Con copia oculta
dam.Subject = Range("E" & i) '"Asunto"
dam.body = Range("F" & i) '"Cuerpo del mensaje"
'
For j = col To Cells(i, Columns.Count).End(xlToLeft).Column
archivo = Cells(i, j)
If archivo <> "" Then dam.Attachments.Add archivo
Next
dam.send 'El correo se envía en automático
'dam.display 'El correo se muestra
Next
MsgBox "Correos enviados", vbInformation, "SALUDOS"
End Sub

Lo que ocurre es que estas haciendo referenci a las celdas más no le dices que hacer después

Te dejo la solución

Simplemente agrega un .value para que interprete que estas haciendo referencia a el contenido de la celda.

Sub correo()
col = Range("H1").Column
For i = 2 To Range("B" & Rows.Count).End(xlUp).Row
    Set dam = CreateObject("outlook.application").createitem(0)
    'Destinatarios
    dam.To = Range("B" & i).value
    'Con copia
    dam.CC = Range("C" & i).value
    'Con copia oculta
    dam.Bcc = Range("D" & i).value
    ' "Asunto"
    dam.Subject = Range("E" & i).value
    ' "Cuerpo del mensaje"
    dam.body = Range("F" & i).value
    For j = col To Cells(i, Columns.Count).End(xlToLeft).Column
        archivo = Cells(i, j)
        If archivo <> "" Then dam.Attachments.Add archivo
    Next
    dam.send 'El correo se envía en automático
    'dam.display 'El correo se muestra
Next
MsgBox "Correos enviados", vbInformation, "
End Sub
Respuesta
1

H o l a : Si tienes alguna de mis versiones para enviar correo y tienes esta línea:

dam.To = Range("B" & i)

Hay que cambiarla por esta:

dam.To = Range("B" & i).Value

Te anexo la macro completa:

'***Macro Para enviar correos
Sub correo()
'Por.Dante Amor
    col = Range("H1").Column
    For i = 2 To Range("B" & Rows.Count).End(xlUp).Row
        Set dam = CreateObject("outlook.application").createitem(0)
        dam.To = Range("B" & i).Value 'Destinatarios
        dam.CC = Range("C" & i).Value 'Con copia
        dam.Bcc = Range("D" & i).Value 'Con copia oculta
        dam.Subject = Range("E" & i).Value '"Asunto"
        dam.body = Range("F" & i).Value '"Cuerpo del mensaje"
        '
        For j = col To Cells(i, Columns.Count).End(xlToLeft).Column
            archivo = Cells(i, j).Value
            If archivo <> "" Then dam.Attachments.Add archivo
        Next
        dam.send 'El correo se envía en automático
        'dam.display 'El correo se muestra
    Next
    MsgBox "Correos enviados", vbInformation, "SALUDOS"
End Sub

Si el código es diferente, entonces pega aquí el código para revisarlo.


Si se resolvió el problema, recuerda valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas