Aprenderemos en el post de hoy a elegir una de nuestras cuentas de Outlook desde la que enviar nuestros emails...
La propiedad buscada en .SendUsingAccount.
Fundamental para el correcto funcionamiento asignar la propiedad como una variable declarada con Set:
Set .SendUsingAccount = xxxxx
Importante (y obvio) emplear la propiedad antes de llamar al método Send.
Supongamos los siguiente valores A2:D2 en nuestra hoja:
Insertamos en la ventana de código de un módulo estándar el siguiente código:
No olvides activar la librería de Microsoft Outlook...!!
Y listo... enviando emails desde la cuenta de Outlook deseada.
Un paso previo interesante para conocer qué cuentas tenemos en nuestro Outlook y sobre todo a qué orden/numeración corresponde, sería lanzar la siguiente macro...
De esta forma identificamos el número de cuenta a elegir...
Un método alternativo es enviar correos en nombre de otra persona o cuenta (.SentOnBehalfOfName).
Por supuesto podremos hacer uso de esta propiedad si tenemos acceso a esa cuenta ;-)
Insertamos en la ventana de código de un módulo estándar el siguiente código:
No olvides activar la librería de Microsoft Outlook...!!
[...] en mi outlook tengo configurada más de una cuenta, con que código especifico de cual quiero que se envíe el correo?[...] |
La propiedad buscada en .SendUsingAccount.
Fundamental para el correcto funcionamiento asignar la propiedad como una variable declarada con Set:
Set .SendUsingAccount = xxxxx
Importante (y obvio) emplear la propiedad antes de llamar al método Send.
Supongamos los siguiente valores A2:D2 en nuestra hoja:
Insertamos en la ventana de código de un módulo estándar el siguiente código:
No olvides activar la librería de Microsoft Outlook...!!
Sub EnvioCuentaEspecificaOutlook() 'OJOOO.. activar referencia/librería Microsoft Outlook 16.0 Object Library o superior !!! Dim olApp As Object Dim olMailItm As Object 'Creamos 'la aplicación de MS Outlook' 'que será la que voy a utilizar Set olApp = CreateObject("Outlook.Application") 'y genero un email vacío... de momento Set olMailItm = olApp.CreateItem(0) 'completamos elementos del email With olMailItm .to = Range("A2").Value 'el destinatario '.bcc = Range("A3").Value 'si quisiéramos enviar con copia oculta .Subject = Range("B2").Value 'el asunto del correo .Body = Range("C2").Value 'el cuerpo del email .Attachments.Add Range("D2").Value 'si queremos adjuntar algún fichero Set .SendUsingAccount = olApp.Session.Accounts.Item(2) 'elegimos la cuenta desde donde enviar el email.. .Display 'mostramos el email completo '.Send 'y lo enviamos... (si queremos) End With 'Dejamos limpias las variables empleadas Set olMailItm = Nothing Set olApp = Nothing End Sub
Y listo... enviando emails desde la cuenta de Outlook deseada.
Un paso previo interesante para conocer qué cuentas tenemos en nuestro Outlook y sobre todo a qué orden/numeración corresponde, sería lanzar la siguiente macro...
Sub testCuenta() Dim olApp As Object Set olApp = CreateObject("Outlook.Application") For i = 1 To olApp.Session.Accounts.Count MsgBox "La cuenta " & olApp.Session.Accounts.Item(i) & " tiene el orden " & i Next i End Sub
De esta forma identificamos el número de cuenta a elegir...
Un método alternativo es enviar correos en nombre de otra persona o cuenta (.SentOnBehalfOfName).
Por supuesto podremos hacer uso de esta propiedad si tenemos acceso a esa cuenta ;-)
Insertamos en la ventana de código de un módulo estándar el siguiente código:
No olvides activar la librería de Microsoft Outlook...!!
Sub SendEmailOnBehalf() Dim olMailItm As Outlook.MailItem Set olMailItm = Outlook.CreateItem(olMailItem) With olMailItm .SentOnBehalfOfName = "consultoria@excelforo.com" 'indicamos la cuenta desde donde enviar el email (en nombre de...) .To = "excelforo@gmail.com" .Subject = "Email en nombre de otra cuenta" .Body = "Hola!!" & vbNewLine & "Saludos cordiales" .Display .Send End With End Sub
Lo que necesito es que cuando ponga en la Celda B11(Mexico X) me sume toda la columna donde se encuente Mexico X pero que esta sumas este clasificada de acuerdo la clase columna A como mi ejemplo Pongo Mexico 4 Celda B11 y me suma toda la fila F pero las suma son deacerdo a los clase de G Admon, G Venta y G Fijo, solo que esta formula tiene que considera que esta tabla nunca esta ordenada ya que Mexico 4 pude estar en la columna( C, D, E, F, h, I)
ResponderEliminarHola Otero,
Eliminarcómo estás?, un placer saludarte igualmente.
Lo siento pero no comprendo..¿podrías ampliar la explicación?
Gracias y saludos cordiales
Hola Ismael, antes que nada gracias por la publicación sobre este tema!
ResponderEliminarEstoy intentando usar la propiedad .SendUsingAccount. pero me arroja error "438:el objeto no admite esta propiedad o metodo".
Aclaro que no tengo mucha experiencia con macros.
Copio parte del código donde creo y envío el correo, y donde debo especificar con que cuenta enviarlo: (espero se entienda y puedas ayudarme)
'genero el mail y envio el mismo (PARA MANDAR RANGO DE CELDAS EN EL CUERPO DEL MAIL)
Dim objOL As New Outlook.Application
Dim Destinatario As String
Dim Destinatario2 As String
Dim Asunto As String
Dim Adjunto As String
Set objMail = objOL.CreateItem(olMailItem)
With objMail
ThisWorkbook.Activate
Destinatario = Hoja1.Cells(13, 13) & "; " & Hoja1.Cells(14, 13) & "; " & Hoja1.Cells(18, 13)
Destinatario2 = Hoja1.Cells(15, 13) & "; " & Hoja1.Cells(17, 13) & "; " & Hoja1.Cells(20, 13)
Asunto = Hoja1.Cells(23, 12) & " al " & Hoja1.Cells(22, 12)
ActiveSheet.Range(Hoja1.Cells(22, 14)).Select 'rango que se muestra en el cuerpo del mail. Éste figura en la hoja1 selda (22,14)
ActiveWorkbook.EnvelopeVisible = True
With ActiveSheet.MailEnvelope
.Item.To = Destinatario
If nivel = 2 Then 'si hay nivel superior a 3 copiamos a Gerente de área-Alberto
.Item.CC = Destinatario2 & "; " & Hoja1.Cells(19, 13)
Else 'si solo hay nivel 3 copiamos solo a coordinador
.Item.CC = Destinatario2
End If
.Item.Subject = Asunto
.Introduction = Hoja1.Cells(24, 12) + Hoja1.Cells(24, 13) 'introducimos el texto en el cuerpo del mail
Set .SendUsingAccount = objOL.Session.Accounts.Item(2) 'Elegimos la cuenta con la que se envía el correo (2)
.Item.Send
End With
End With
Set objMail = Nothing
Set objOL = Nothing
Muchas Gracias!
saludos
Hola,
Eliminarpor desgracia, hasta donde yo se, no es posible compatibilizar la opción de enviar email .Mailenvelope con la elección de cuenta...
:'(
Si solo quieres enviar una celda como rango adjunto (cells(22,14)), yo añadiría como valor en el cuerpo (.body) del email 'normal'
Saludos
Muchas Gracias igualmente Ismael!!
Eliminarsaludos!