¿Cómo seleccionar de cual cuenta de correo debe salir el correo con una macro de Excel?

Tengo esta macro...

Sub Test()
Dim OutApp As Object
Dim Outmail As Object
Rem se crea la conexion con el gestor de correo
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.logon
Rem crea metodo de envio de correo
Set Outmail = OutApp.CreateItem(0)
ActiveWorkbook.Save
On Error Resume Next
With Outmail
.To = [email protected]
.CC = [email protected] 
.Subject = "Ejemplo de Asunto"
.Body = "Ejemplo de Cuerpo de Correo"
.Send
End With
On Error GoTo 0
Set Outmail = Nothing
Set OutApp = Nothing

MsgBox "Fin de proceso el " & Date & " a las " & Time, vbInformation
End Sub

El asunto es que tengo tres correos en mi Outlook, y correo de trabajo y dos para envío másico de información. Pero para que funcione como lo requiero, debo cambiar el correo predeterminado cada vez que ocupo hacer un envío, para que unos correos se vayan por XMail y otros por Ymail. Quiero ver si puedo hacer eso desde la macro, y no desde el Outlook manualmente.

2 respuestas

Respuesta
2

H o l a:

Prueba con esta opción:

Después de esta línea:

.Subject = "Ejemplo de Asunto"

Pon esta:

.SendUsingAccount  = Outmail.Session.Accounts.Item(2)

Cambia el 2 que está después de Item(2), por el número de cuenta

El número de cuenta lo puedes ver si seleccionas las cuentas:


Otra opción es:

Después de esta línea:

.Subject = "Ejemplo de Asunto"

Pon esta:

.SentOnBehalfOfName = "CuentaCorreo"

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Gracias por responder tan pronto.

.SendUsingAccount  = Outmail.Session.Accounts.Item(2) No funciono, lamentablemente no logre que lo hiciera.

Con  .SentOnBehalfofName = "CuentaCorreo" No funciona realmente. Pues lo que hace es como crear una mascara. Ejemplo, puedo poner [email protected] en este valor y llegara al correo algo como esto, "[email protected] a travez de miempresa.com". Lo cual en cierto sentido funcionaria, pero seria de un correo ficticio. Ademas que creo que esto puede ser utilizado de mala manera.

Aun no puedo seleccionar cual de las 3 cuentas que tengo quiero enviar los correos con la macro.

Esta es la única instrucción que existe para seleccionar la cuenta:

http://www.rondebruin.nl/win/s1/outlook/account.htm 

Si no te funciona en la macro, puede ser por la versión de excel.

No se logra! ¿Sera por tener 3 correos?

Es que cuando corro la macro para ver los números de las cuentas, solo me salen 2 y no las 3 que tengo.

Prueba la macro que está en el enlace

http://www.rondebruin.nl/win/s1/outlook/account.htm 

Si uso la macro tal y como esta, no sirve...

Solo cambiar la parte que dice...

    Dim OutApp As Outlook.Application
    Dim OutMail As Outlook.MailItem

por...

    Dim OutApp
    Dim OutMail

Para que funcione.

Gracias

Esa es la opción que tiene VBA para seleccionar la cuenta.

Si no funciona es probablemente un detalle de la versión de excel.

Respuesta
1

:)

Complementando la primera parte de lo explicado por Dante, para obtener el número de la cuenta de correo puedes hacer:

Sub Test1()
Dim Vec(), Q%, i%
With CreateObject("Outlook.Application")
  Q = .Session.Accounts.Count
  ReDim Vec(1 To Q)
  For i = 1 To Q
    Vec(i) = i & ") " & .Session.Accounts.Item(i).SmtpAddress
  Next
End With
MsgBox "Los accounts son:" & vbLf & vbLf & Join(Vec, vbLf)
End Sub

Y ése es el número que utilizarás en el SendUsingAccount. Por ejemplo:

Sub Test2()
With CreateObject("Outlook.Application").CreateItem(0)
'Suponiendo que quiero mandar el mail con el segundo account:
  .SendUsingAccount .Session.Accounts.Item(2)
  .To = "[email protected]"
  .CC = "[email protected]"
  .Subject = "Ejemplo de Asunto"
  .Body = "Ejemplo de Cuerpo de Correo"
  .Display
End With
End Sub

Muy buena opción me estas dando Mario. Pero tengo tres correos, y la macro solo menciona que tengo dos.

Aun no puedo seleccionar cual de las 3 cuentas que tengo quiero enviar los correos con la macro.

:)

No siento que seas claro en describir tu problema. A ver:

a) Indica si lo que no te funciona es Test1 o Test2.

b) Exactamente cual línea es la que te marca el error y que te indica dicho error.

c) ¿Qué versión de Outlook estás utilizando?

Veamos si con esas tres pistas es factible entenderte, ¿Ok?...
Saludos, Mario R

:)

.

A) En Test1 solo salen 2 de las 3 cuentas que tengo en el Outlook. En Test2, utiliza la cuenta predeterminada, y no la que estoy solicitando usar, osea, la no predeterminada.

B) Ninguna linea indica error. Solo utiliza la cuenta predeterminada, y no la que estoy solicitando usar, osea, la no predeterminada.

C) Uso Microsoft Office Professional Plus 2010, version 14.0.4760.1000 (32 bits)

Gracias

:)

¿Y que te ocurre, Johnathan, cuando de la línea:

.SendUsingAccount .Session.Accounts.¿Item(2)

cambias el "dos" por un "uno" o por un "tres"?...
:)

.

Gracias por tu gran vuluntad de ayudar.

Lo que pasa cuando hago eso que me dices es nada. Pruebo con 1, o 2 o 3. Suponiendo que al cambiarlo va a cambiar entre las 3 cuentras que tengo. Pero todas las pruebas que realizo continúan saliendo del correo electrónico predeterminado.

:)

La verdad es que ninguna de tus observaciones sugiere un comportamiento técnicamente esperable.

Tienes, en tal caso, dos líneas de acción:

- Desinstalar completamente tu outlook y luego re-instalarlo, o

- Intentar con CDO

¿Cómo te ves?...

Lamentablemente no puedo desinstalar. Soy usuario limitado en esta PC, y explicar esto al de T.I. sera un enredo. ¿Cómo seria por CDO?

:)

Tómate su tiempo para leer: Sending mail from Excel with CDO

El lo "mejorcito" que hay sobre el tema.

¿En resumen?... Envías mail's sin necesidad de un programa externo (como lo es el MS Outlook):

- Indicas la dirección de correo que envía el mail.

- Indicas la contraseña de la cuenta de mail remitente.

- Indicas la dirección de correo que lo recibirá.

- Indicas un par de datos técnicos necesarios.

¡Y listo!...

De modo que si es tu Outlook el problema: ¡Con esto "lo esquivas" totalmente!

:)

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas