Enviar correo desde Excel 2007

14/04/2009 - 00:03 por maap | Informe spam
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

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
14/04/2009 - 06:14 | Informe spam
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
'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
Respuesta Responder a este mensaje
#2 Miguel
14/04/2009 - 06:54 | Informe spam
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" escribió en el mensaje de
noticias news:
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
'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

Respuesta Responder a este mensaje
#3 Miguel
14/04/2009 - 06:56 | Informe spam
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" escribió en el mensaje de
noticias news:
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
'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

Respuesta Responder a este mensaje
#4 maap
14/04/2009 - 06:57 | Informe spam
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
Respuesta Responder a este mensaje
#5 Héctor Miguel
14/04/2009 - 09:33 | Informe spam
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.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida