Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Enviar correo desde Excel 2007

400 views
Skip to first unread message

maap

unread,
Apr 13, 2009, 6:03:18 PM4/13/09
to
Hola a todos, tenía el siguiente procedimiento que saqué de una guía
para enviar correos electrónicos a direcciones de una lista de excel.
Me funcionaba correctamente en excel 2003, pero me da error en tiempo
de ejecución con Excel 2007 y desconozco la razón. Cualquier pista es
bienvenida.

Sub sendemail()
'utiliza vinculación tempran
'requiere referencia a la Biblioteca Outlook Object
Dim OutlookApp As Outlook.Application
Dim MIitem As Outlook.MailItem
Dim cell As Range
Dim Subj As String
Dim EmailAddr As String
Dim Recipient As String
Dim Bonus As String
Dim Msg As String

'Crear el objeto Outlook
Set OutlookApp = New Outlook.Application

'realizar un bucle por filas
For Each cell In Columns("B").Cells.SpecialCells
(xlCellTypeConstants)
If cell.Value Like "*@*" Then
'obtener los datos
Subj = "Your Annual Bonus"
Recipient = cell.Offset(0, -1).Value
EmailAddr = cell.Value
Bonus = Format(cell.Offset(0, 1).Value, "$ 0.000.")

'crear el mensaje
Msg = "Dear " & Recipient & vbCrLf & vbCrLf
Msg = Msg & " I am pleased to inform you that your annual
bonus is "
Msg = Msg & Bonus & vbCrLf & vbCrLf
Msg = Msg & "William Rose" & vbCrLf
Msg = Msg & "President"

'crear Mail Item y enviarlo
Set MIitem = OutlookApp.CreateItem(olMailItem)
With MIitem
.To = EmailAddr
.Subject = Subj
.Body = Msg
.Send

End With
End If
Next
End Sub

Po cierto las referencias a Outlook 2007 las tengo activadas y el
error que me da es en tiempo de ejecución.

Saludos y gracias!!
Miguel

Héctor Miguel

unread,
Apr 14, 2009, 12:14:13 AM4/14/09
to
hola, Miguel !

1) la version de office (excel y outlook) son exactamente la misma (2003 o 2'007) en el equipo donde falla el codigo ???

2) podrias exponer exactamente el error que obtienes (numero y texto del mensaje) asi como la linea de codigo que lo causa ???

comentas (si hubiera) cualquier detalle "en el tintero" ?
saludos,
hector.

__ 1 __
> ... el siguiente procedimiento que saque de una guia para enviar correos electronicos a direcciones de una lista de excel.
> Me funcionaba correctamente en excel 2003, pero me da error en tiempo de ejecucion con Excel 2007 y desconozco la razon.
> Cualquier pista es bienvenida...
__ 2 __
> Po cierto las referencias a Outlook 2007 las tengo activadas y el error que me da es en tiempo de ejecucion.
__ el codigo expuesto __
Sub sendemail()
'utiliza vinculacion tempran

maap

unread,
Apr 14, 2009, 12:57:34 AM4/14/09
to
Muchas gracias hector!

Pues verás, el cuadro de error que me sale es: "Se ha producido el
error
'287' en tiempo de ejecución: Error definido por la aplicación o el
objeto"

Cuando depuro, el código se detiene en la línea ".send"
Si por ejemplo cambio el comando .send por otro como .display, el
procedimiento funciona perfectamente en Excel 2007.

Espero vuestros comentarios.
Saludos,
Miguel

Miguel

unread,
Apr 14, 2009, 12:54:37 AM4/14/09
to
Muchas gracias hector!


"Héctor Miguel" <NOhemio...@PLShotmail.com> escribió en el mensaje de
noticias news:OYqD6dLv...@TK2MSFTNGP02.phx.gbl...

Miguel

unread,
Apr 14, 2009, 12:56:12 AM4/14/09
to
Muchas gracias hector!

Pues verás, el cuadro de error que me sale es: "Se ha producido el error
'287' en tiempo de ejecución: Error definido por la aplicación o el objeto"

Cuando depuro, el código se detiene en la línea ".send"
Si por ejemplo cambio el comando .send por otro como .display, el
procedimiento funciona perfectamente en Excel 2007.

Espero vuestros comentarios.
Saludos,
Miguel


"Héctor Miguel" <NOhemio...@PLShotmail.com> escribió en el mensaje de
noticias news:OYqD6dLv...@TK2MSFTNGP02.phx.gbl...

Héctor Miguel

unread,
Apr 14, 2009, 3:33:43 AM4/14/09
to
hola, Miguel !

> ... el cuadro de error que me sale es:
> "Se ha producido el error '287' en tiempo de ejecucion: Error definido por la aplicacion o el objeto"
> Cuando depuro, el codigo se detiene en la línea ".send"


> Si por ejemplo cambio el comando .send por otro como .display, el procedimiento funciona perfectamente en Excel 2007.

ese numero de error indica que Outlook "pregunta" si das tu permiso a "una aplicacion" que esta tratando de enviar un correo
(son cuestiones de seguridad en la configuracion de outlook y, a menos que las cambies, necesitas encontrar alternativas)
revisa la informacion de esta pagina: -> http://www.rondebruin.nl/mail/prevent.htm

tambien podria ser causado por una direccion de correo NO "totalmente" valida -???-
haz una prueba cambiando la comprobacion que haces a esa celda +/-
de: -> If cell.Value Like "*@*" Then
a: -> If cell.Value Like "?*@?*.?*" Then

saludos,
hector.


maap

unread,
Apr 14, 2009, 2:06:27 PM4/14/09
to
Gracias por tu respuesta Hector,

> ese numero de error indica que Outlook "pregunta" si das tu permiso a "una aplicacion" que esta tratando de enviar un correo
> (son cuestiones de seguridad en la configuracion de outlook y, a menos que las cambies, necesitas encontrar alternativas)
> revisa la informacion de esta pagina: ->http://www.rondebruin.nl/mail/prevent.htm

Me estoy volviendo loco y no doy con la tecla
He entrado en el centro de confianza de Outlook (arrancandolo como
Administrador) y he cambiado para que permita el acceso desde
programación.
Ejecuto la macro y.... funciona!!!
Bien, vuelvo a entrar en el centro de confianza de Outllok y vuelvo a
cambiar el valor para que no permita el acceso desde programación,
evidentemente la macro deja de funcionar.

Muy bien, una vez localizado el problema, intento bajar el nivel de
seguridad nuevamente, y..... nada de nada!!! no me deja ejecutar ahora
la macro!!!! increible antes si y ahora no ¿?

> tambien podria ser causado por una direccion de correo NO "totalmente" valida    -???-
> haz una prueba cambiando la comprobacion que haces a esa celda +/-
> de: -> If cell.Value Like "*@*" Then
>   a: -> If cell.Value Like "?*@?*.?*" Then

Eso lo descarto puesto que estoy haciendo inspeección sobre las
variables de los campo de las direcciones de correo y parecen
correctos.


Saludos,
Miguel Angel

maap

unread,
Apr 14, 2009, 2:25:36 PM4/14/09
to
> > tambien podria ser causado por una direccion de correo NO "totalmente" valida    -???-
> > haz una prueba cambiando la comprobacion que haces a esa celda +/-
> > de: -> If cell.Value Like "*@*" Then
> >   a: -> If cell.Value Like "?*@?*.?*" Then


Bueno, ahondando más es tu respuesta donde me indicabas que podría
haber un error en el campo de dirección de correo, he probado a hacer
inspección de la variable MIItem.To y obtengo que:

Watch : : miitem.to : <Error definido por la aplicación o el
objeto> : Integer : SendMail.sendemail

La crea como Integer!!!!
Entonces hago lo siguiente: antes del .send, coloco .display y..... me
muestra la composición del correo perfectamente con el campo 'To' con
el valor correcto, y además me envía el correo. La inspección de la
variable ahora pasa a ser

Watch : : miitem.to : "maan...@gmail.com" : String :
SendMail.sendemail

No se, no entiendo nada.... ¿así de raro es el office 2007?

Héctor Miguel

unread,
Apr 14, 2009, 2:26:40 PM4/14/09
to
hola, Miguel Angel !

> Me estoy volviendo loco y no doy con la tecla
> He entrado en el centro de confianza de Outlook (arrancandolo como Administrador)

> y he cambiado para que permita el acceso desde programacion.


> Ejecuto la macro y.... funciona!!!
> Bien, vuelvo a entrar en el centro de confianza de Outllok

> y vuelvo a cambiar el valor para que no permita el acceso desde programacion


> evidentemente la macro deja de funcionar.
> Muy bien, una vez localizado el problema, intento bajar el nivel de seguridad nuevamente

> y..... nada de nada!!! no me deja ejecutar ahora la macro!!!! increible antes si y ahora no ?

(hasta donde se) cuando cambias este tipo de configuraciones se modifican claves en el registro de windows
(entonces...) este cambio en el registro "entra en accion" -> la siguiente vez... que se abre esa aplicacion
convendria comprobar si cuando haces los cambios de configuracion, tambien (re)inicias outlook -?-
esto, sobre todo porque en tus lineas del codigo estableces referencias a outlook como "nueva" aplicacion...
-> Set OutlookApp = New Outlook.Application

comentas ?
saludos,
hector.


0 new messages