Controle Outlook desde Excel usando VBA en Microsoft Excel

Anonim

Los dos ejemplos de macros a continuación demuestran cómo puede enviar información a Outlook
(por ejemplo, enviar un mensaje de correo electrónico) y cómo puede recuperar información de Outlook
(por ejemplo, recuperar una lista de todos los mensajes de la bandeja de entrada).

¡Nota! ¡Lea y edite el código de ejemplo antes de intentar ejecutarlo en su propio proyecto!

'requiere una referencia a la biblioteca de objetos de Microsoft Outlook 8.0 Sub SendAnEmailWithOutlook ()' crea y envía un nuevo mensaje de correo electrónico con Outlook Dim OLF As Outlook.MAPIFolder, olMailItem As Outlook.MailItem Dim ToContact As Outlook.Recipient Set OLF = GetObject ( "", _ "Outlook.Application"). GetNamespace ("MAPI"). GetDefaultFolder (olFolderInbox) Establecer olMailItem = OLF.Items.Add 'crea un nuevo mensaje de correo electrónico Con olMailItem .Subject = "Asunto para el nuevo correo electrónico mensaje de correo "'asunto del mensaje Establecer ToContact = .Recipients.Add (" [email protected] ")' agregar un destinatario Establecer ToContact = .Recipients.Add (" [email protected] ") 'agregar un destinatario ToContact.Type = olCC 'establece el último destinatario como CC Establecer ToContact = .Recipients.Add ("[email protected]")' agrega un destinatario ToContact.Type = olBCC 'establece el último destinatario como BCC .Body = "Este es el texto del mensaje" & Chr (13) 'el texto del mensaje con un salto de línea .Attachments.Add "C: \ FolderName \ Filename.txt", olByValue`` _ "Attachment"' insertar adjunto '.Attachments.Add "C : \ FolderName \ Filename.txt ", olByReference`` _" Acceso directo al archivo adjunto "'insertar acceso directo'. Adjuntos.Agregue" C: \ Nombre de carpeta \ Nombre de archivo.txt ", olEmbeddedItem, _" Archivo adjunto incrustado "'archivo adjunto incrustado'. Attachments.Add "C: \ FolderName \ Filename.txt", olOLE,, _ "Adjunto OLE" 'Adjunto OLE .OriginatorDeliveryReportRequested = Verdadero' confirmación de entrega .ReadReceiptRequested = Verdadero 'confirmación de lectura' .Guardar 'guarda el mensaje para su posterior edición. Send 'envía el mensaje de correo electrónico (lo pone en la Bandeja de salida) End With Set ToContact = Nothing Set olMailItem = Nothing Set OLF = Nothing End Sub Sub ListAllItemsInInbox () Dim OLF As Outlook.MAPIFolder, CurrUser As String Dim EmailItemCount As Integer, i As Integer, EmailCount As Integer Application.ScreenUpdating = False Workbooks.Add 'crear un nuevo libro de trabajo' agregar encabezados Celdas (1, 1) .Fórmula = Celdas "Asunto" (1, 2) .Fórmula = Celdas "Recibidas" (1 , 3) .Formula = Celdas "Attachments" (1, 4) .Formula = "Read" With Range ("A1: D1"). Font .Bold = True .Si ze = 14 Finalizar con Application.Calculation = xlCalculationManual Set OLF = GetObject ("", _ "Outlook.Application"). GetNamespace ("MAPI"). GetDefaultFolder (olFolderInbox) EmailItemCount = OLF.Items.Count i = 0: EmailCount = 0 'leer información de correo electrónico Mientras i <EmailItemCount i = i + 1 Si i Mod 50 = 0 Then Application.StatusBar = "Leyendo mensajes de correo electrónico" & _ Formato (i / EmailItemCount, "0%") & "… "Con OLF.Items (i) EmailCount = EmailCount + 1 Cells (EmailCount + 1, 1) .Formula = .Subject Cells (EmailCount + 1, 2) .Formula = Format (.ReceivedTime," dd.mm.yyyy hh: mm ") Celdas (EmailCount + 1, 3) .Formula = .Attachments.Count Cells (EmailCount + 1, 4) .Formula = Not .UnRead End With Wend Application.Calculation = xlCalculationAutomatic Set OLF = Nothing Columns (" A: D ") .AutoFit Range (" A2 "). Seleccione ActiveWindow.FreezePanes = True ActiveWorkbook.Saved = True Application.StatusBar = False End Sub