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.

También te podría gustar...