ERROR DE AUTOMATIZACION

12/01/2004 - 01:16 por dorian+ | Informe spam
hola a todos !

estoy ejecutando desde access una rutina para enviar mails que siempre funciono sin problemas\

ahora la incluí dentro de un bucle for... to... next que va reccorriendo un recordset y deq cuerdo a determiandas condiciones envia un mail...

funciona perfectamente la primera vez que se ejecuta\ pero cuando intenta enviar el segundo archivo generado por el recorset me sale el mensaje: "se ha producido el error '-2147467259 (80004005)'en tiempo de ejecución: error de automatización" y cuando quiero depurar e código me resalta la sentencia: "Set objOutlook = CreateObject("Outlook.Application")

alguien me puede decir que puede estar pasando

muchas gracias a todos\ dorian+

Preguntas similare

Leer las respuestas

#1 Emiliano Martín
12/01/2004 - 04:08 | Informe spam
Te diría que saques la línea a la que hacés mención del ciclo for.
La misma es para crear una instancia del objeto de Outlook. Si no matás
dichas instancia dentro del ciclo, no hay necesidad de volver a crearla en
cada iteración. Saludos,

Emiliano


"dorian+" escribió en el mensaje
news:
hola a todos !!

estoy ejecutando desde access una rutina para enviar mails que siempre


funciono sin problemas\

ahora la incluí dentro de un bucle for... to... next que va reccorriendo


un recordset y deq cuerdo a determiandas condiciones envia un mail

funciona perfectamente la primera vez que se ejecuta\ pero cuando intenta


enviar el segundo archivo generado por el recorset me sale el mensaje: "se
ha producido el error '-2147467259 (80004005)'en tiempo de ejecución: error
de automatización" y cuando quiero depurar e código me resalta la sentencia:
"Set objOutlook = CreateObject("Outlook.Application")"

alguien me puede decir que puede estar pasando ?

muchas gracias a todos\ dorian+
Respuesta Responder a este mensaje
#2 dorian+
12/01/2004 - 05:01 | Informe spam
emiliano:

gracias por responder\ la linea que figura dentro del bucle es precisamente la que llama al procediemiento que enevia el mail\ y son tantos mails como veces se repita el ciclo

en ese procediemiento las dos ultimas que se ejecutan antes de salir lineas son:

Set objOutlookMsg = Nothing
Set objOutlook = Nothing

te refieres a eso con "matarla" ?

si no me podrias indicar como hacerlo por favor?

te lo agradezco mucho\ saludos\ dorian+
Respuesta Responder a este mensaje
#3 Emiliano Martín
12/01/2004 - 13:57 | Informe spam
Esas dos últimas líneas son las que "matan" la instancia, en realidad, la
segunda ya que estamos hablando del objeto objOutlook. La línea

Set objOutlook = CreateObject("Outlook.Application")"

no es la que envia el email sino la que crea la instancia del OL. Sólo
necesitas ejecutarla una vez (afuera del ciclo for). Si no te funciona,
postea el código que le pego una mirada. Saludos,

Emiliano


"dorian+" escribió en el mensaje
news:
emiliano:

gracias por responder\ la linea que figura dentro del bucle es


precisamente la que llama al procediemiento que enevia el mail\ y son tantos
mails como veces se repita el ciclo

en ese procediemiento las dos ultimas que se ejecutan antes de salir


lineas son:

Set objOutlookMsg = Nothing
Set objOutlook = Nothing

te refieres a eso con "matarla" ?

si no me podrias indicar como hacerlo por favor?

te lo agradezco mucho\ saludos\ dorian+


Respuesta Responder a este mensaje
#4 dorian+
12/01/2004 - 16:31 | Informe spam
emiliano

esa sentencia no puedo ponerla fuera del ciclo for ... to ... next porque esta "dentro" del procediemiento para enviar mails lo que está dentro del bucle for es la "llamada" a ese procedimient
ya se que esa línea es la que genera la instancia de trabajo con el outlook y que precisamente el problema esta cuando quiere volver a crearla... por eso al final de prcedimiento la "mato" como ya te había comentado con la sentencia

Set objOutlook = Nothin

pero parece que no queda bien muerta\ debe ser como terminator... (siempre da para una peli mas ;)


For n = 1 To
.

.

If ExisteArchivo("c:\Mis Documentos\NombreArchivo.ext") The
MailSubject = "Asunto
MailTexto = "MailTexto
SendMessage ("c:\Mis Documentos\NombreArchivo.ext")
End I
Nex

__________________________________________

para enviar mail

Public MailSubject As Strin
Public MailTexto As Strin
Public MailDestinatario As Strin
Public MailCopia As Strin



Sub SendMessage(Optional AttachmentPath
Dim objOutlook As Outlook.Applicatio
Dim objOutlookMsg As Outlook.MailIte
Dim objOutlookRecip As Outlook.Recipien
Dim objOutlookAttach As Outlook.Attachmen


' Create the Outlook session
Set objOutlook = CreateObject("Outlook.Application"

' Create the message
Set objOutlookMsg = objOutlook.CreateItem(olMailItem

With objOutlookMs

...
...
...
End Wit

Set objOutlookMsg = Nothin
Set objOutlook = Nothin

End Su
Respuesta Responder a este mensaje
#5 Emiliano Martín
12/01/2004 - 18:20 | Informe spam
Probá matando todos los objetos que creaste:

Set objOutlookRecip = Nothing
Set objOutlookAttach = Nothing
Set objOutlookMsg = Nothing
Set objOutlook = Nothing

Si no lo hacés, el objeto de Outlook puede quedar cargado en memoria, aunque
mates el objeto con el que lo referencias. Yo probaría agregar las 2
primeras líneas para ver si se puede solucionar. Si eso no funciona...
habría que tratar de cambiar un poco el código. Saludos,

Emiliano


"dorian+" escribió en el mensaje
news:
emiliano:

esa sentencia no puedo ponerla fuera del ciclo for ... to ... next porque


esta "dentro" del procediemiento para enviar mails lo que está dentro
del bucle for es la "llamada" a ese procedimiento
ya se que esa línea es la que genera la instancia de trabajo con el


outlook y que precisamente el problema esta cuando quiere volver a
crearla... por eso al final de prcedimiento la "mato" como ya te había
comentado con la sentencia:

Set objOutlook = Nothing

pero parece que no queda bien muerta\ debe ser como terminator... (siempre


da para una peli mas ;) )



For n = 1 To 8
.
.
.

If ExisteArchivo("c:\Mis Documentos\NombreArchivo.ext") Then
MailSubject = "Asunto"
MailTexto = "MailTexto"
SendMessage ("c:\Mis Documentos\NombreArchivo.ext")
End If
Next

___________________________________________

para enviar mail:

Public MailSubject As String
Public MailTexto As String
Public MailDestinatario As String
Public MailCopia As String





Sub SendMessage(Optional AttachmentPath)
Dim objOutlook As Outlook.Application
Dim objOutlookMsg As Outlook.MailItem
Dim objOutlookRecip As Outlook.Recipient
Dim objOutlookAttach As Outlook.Attachment


' Create the Outlook session.
Set objOutlook = CreateObject("Outlook.Application")

' Create the message.
Set objOutlookMsg = objOutlook.CreateItem(olMailItem)

With objOutlookMsg




End With

Set objOutlookMsg = Nothing
Set objOutlook = Nothing

End Sub


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida