Cómo extraer correos desde Outlook a Excel usando VBA y macros
En este video tutorial vas a aprender a desarrollar una macro que te permitirá pasar la información de tus mensajes de correo electrónico de Outlook de Office 365 o Microsoft 365 a Excel.
Este tutorial es aplicable para todas las cuentas de correo, incluyengo gmail.com, outlook.com, hotmail.com o cualquier correo empresarial. La macro recorrerá todos lo mensajes y los devolverá una hoja de Excel.
Ver Video Extraer correos de Outlook a Excel
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Antes de comenzar
Será necesario que tengas una cuenta de correo configurada en tu Outlook de Office. Esta macro estoy casi seguro que funcionará desde Excel 2007 hasta Excel de Office 365.
Figura 1. Cuenta configurada en Microsoft Outlook de Office 365 o Microsoft 365.
Además debes tener activa la Referencia a Outlook, para poder hacer la conexión entre aplicaciones. Solo entra al IDE de VBA, en el Menú Herramientas, Referencias, activa la Referencia Microsoft Outlook 16.0 Object Library.
Figura 2. Activar la referencia Microsoft Outlook 16.0 Object Library.
Conceptos para entender la macro
Primero vamos a crear la conexión hacia la aplicación usando CreateObject(“Outlook.Application”). Luego haremos la conexión hacia el protocolo MAPI (Messaging Application Programming Interface), que nos permitirá conectarnos a Outlook, usando OutlookApp.GetNamespace(“MAPI”). Y para finalizar nos conectaremos hacia la Bandeja de entrada con ONameSpace.GetDefaultFolder(olFolderInbox).
Si quisieras conectarte a una carpeta en particular, usa: ONameSpace.Folders(“correo@gmail.com”).Folders(“Carpeta”).
Extraer correos hacia Excel
Al ejecutar la macro, veremos cómo la información de los correos se pasa a una hoja de Excel.
Figura 3. Extraer información de mensajes de correo de Outlook a Excel.
Código VBA de la macro
Sub ExtraerCorreosDeOutlook() Dim OutlookApp As Object Dim ONameSpace As Object Dim MyFolder As Object Dim OItem As Object Dim Fila As Integer Set OutlookApp = CreateObject("Outlook.Application") Set ONameSpace = OutlookApp.GetNamespace("MAPI") Set MyFolder = ONameSpace.GetDefaultFolder(olFolderInbox) 'Set MyFolder = ONameSpace.Folders("correo@gmail.com").Folders("Carpeta") Range(Range("A2"), ActiveCell.SpecialCells(xlLastCell)).ClearContents Fila = 2 For Each OItem In MyFolder.Items Sheets("Hoja1").Cells(Fila, 1).Value = OItem.SenderEmailAddress Sheets("Hoja1").Cells(Fila, 2).Value = OItem.To Sheets("Hoja1").Cells(Fila, 3).Value = OItem.Subject Sheets("Hoja1").Cells(Fila, 4).Value = OItem.ReceivedTime Sheets("Hoja1").Cells(Fila, 5).Value = OItem.Body Fila = Fila + 1 Next OItem Set OutlookApp = Nothing Set ONameSpace = Nothing Set MyFolder = Nothing End Sub
Quieres enviar correos desde Excel
Entra a esta serie de tutoriales.
Descarga el archivo de ejemplo
Extraer correos desde Outlook a Excel usando VBA y macros – EXCELeINFO.zip
Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.