Seguramente alguna vez has necesitado extraer información de tu Lista de contactos de Outlook, y hayas tenido que recurrir a la exportación en formato .xlsx desde Microsoft Outlook.
Hoy emplearemos una macro para Excel que nos permite importar la información de los contactos desde Excel.
Para ello insertamos nuestro código en un módulo estándar de nuestro proyecto de VBA desde el editor de VB...
Tras ejecutar veremos en nuestra 'Hoja1' de Libro de trabajo el listado de los contactos de Outlook:
Hoy emplearemos una macro para Excel que nos permite importar la información de los contactos desde Excel.
Para ello insertamos nuestro código en un módulo estándar de nuestro proyecto de VBA desde el editor de VB...
Sub Importar_Contactos_Outlook() 'definimos las variables de Outlook como Objects. Dim olApp As Object Dim olNamespace As Object Dim olFolder As Object Dim olConItems As Object Dim olItem As Object 'Objetos a usar de nuestro Libro de Excel Dim wbBook As Workbook Dim wsSheet As Worksheet 'asignamos valor a los objetos. Set wbBook = ThisWorkbook 'nuestro libro de trabajo Set wsSheet = wbBook.Sheets(1) 'la Hoja1 de nuestro libro será el destino de la importación 'Location in the imported contact list. Dim filaContacto As Long 'Añadimos y formateamos la cabecera de nuestro destino... With wsSheet 'primero limpiamos la Hoja destino.. .Range("A1").CurrentRegion.Clear 'ahora añadimos la cabecera o rótulos de encabezado... .Cells(1, 1).Value = "Nombre de Empresa" .Cells(1, 2).Value = "Nombre Completo para mostrar" .Cells(1, 3).Value = "Dirección E-mail" ' y damos formato.... With .Range("A1:C1") .Font.Bold = True .Font.Color = vbRed .Font.Size = 11 End With End With wsSheet.Activate 'Configuramos las variables necesarias de Outlook 'empleando el IMAP (=MAPI) 'y la carpeta por defecto de outlook para los contactos... Set olApp = CreateObject("Outlook.Application") Set olNamespace = olApp.GetNamespace("MAPI") Set olFolder = olNamespace.GetDefaultFolder(10) Set olConItems = olFolder.Items 'Número de fila donde comenzamos a traernos los datos importados filaContacto = 2 'For each contact: if it is a business contact, write out the business info in the Excel worksheet; 'otherwise, write out the personal info. For Each olItem In olConItems If TypeName(olItem) = "ContactItem" Then With olItem Cells(filaContacto, 1).Value = .CompanyName Cells(filaContacto, 2).Value = .FullName Cells(filaContacto, 3).Value = .Email1Address 'otras propiedades de los contactos...: '.HomeAddressStreet '.HomeAddressPostalCode '.HomeAddressCity '.BusinessAddressCity '.BusinessAddressPostalCode '.BusinessAddressCity End With 'aumentamos la fila filaContacto = filaContacto + 1 End If Next olItem 'Limpiamos las variables creadas. Set olItem = Nothing Set olConItems = Nothing Set olFolder = Nothing Set olNamespace = Nothing Set olApp = Nothing 'mensaje de confirmación MsgBox "Lista importada...!!", vbInformation End Sub
Tras ejecutar veremos en nuestra 'Hoja1' de Libro de trabajo el listado de los contactos de Outlook:
Muy bueno, lo use sin problemas, gracias por el aporte
ResponderEliminarSí, es bueno.
ResponderEliminarPero ¿es posible suprimir el pop-up de Outlook diciendo "a program is trying to access e-mail address info...?
Un saludo.
JC.
Hola JC,
Eliminar¿te aparece ese mensaje al ejecutar el código del post?
Slds
Hola, Isamel.
EliminarGracias por tu interés, lo primero. :]
Así es, al ejecutar la línea que toma la dirección de correo "Cells(filaContacto, 3).Value = .Email1Address"
Tengo S.O. Wind 7 Enterprise y Outlook 2010
Un saludo.
JC.
que raro...
Eliminarprobaría añadiendo y deshabilitando las alertas:
Application.DisplayAlerts = False
y finalizando el procedimiento con
Application.DisplayAlerts = True
para reestablecer los mensajes...
Slds
Eso no funciona, ya que la alerta no proviene de excel, sino de Microsoft Outlook. :-[
EliminarEs un bloqueo que empezó con la versión 2007 y posteriores.
Una pena.
Muchas gracias.
JC.
Hola Melguizo...
EliminarSolo te puedo decir que en mi equipo con Win7 y outlook 2013 (cuando escribí el post) no aparecía ningún mensaje...
y probando con mi configuración actual (Win7 y office 2016) tampoco..
por eso me extraña.
Coincido que el 'problema' está en Outlook.. quizá tengas algo en la configuración?
Slds
Hola, Ismael.
Eliminar¡qué envidia me das!
¡ojalá pudiera saber qué me falla! ya que tengo este mismo problema con otras macros.
De cualquier forma, encantado de saludar por este foro y muchas gracias.
JC.