NOTE: One alternative to creating code to export user-defined fields is to add all of the fields to a table view in Outlook. You can then select all of the data and copy and paste it into Microsoft Excel.
The following sample code converts Outlook contact information into Access database table rows. With modifications, you can use this code as a basis for importing other types of Outlook items, such as appointments, notes, tasks, and so on.
There is also an overview and separate code example available on the Microsoft Web site at the following location:
- You need to set a reference to the Microsoft Outlook 10.0 Object Library and the Microsoft DAO 3.6 Object Library.
- The field types used in this example are text, in both Access and Outlook. To convert other types of fields, you must modify the code appropriately.
- The sample code provided does not include error checking code which is necessary for a production application.
- The code below assumes that the Access fields are set to Allow Zero-Length Values.
If you have limited programming experience, you may want to contact a Microsoft Certified Partner or Microsoft Advisory Services. For more information, visit these Microsoft Web sites:
Microsoft Certified Partners - https://partner.microsoft.com/global/30000104
Microsoft Advisory Services - http://support.microsoft.com/gp/advisoryservice
For more information about the support options that are available and about how to contact Microsoft, visit the following Microsoft Web site:http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS
' This code is based in Microsoft Access.
' Set up DAO objects (uses existing "tblContacts" table)
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("tblContacts")
' Set up Outlook objects.
Dim ol As New Outlook.Application
Dim olns As Outlook.Namespace
Dim cf As Outlook.MAPIFolder
Dim c As Outlook.ContactItem
Dim objItems As Outlook.Items
Dim Prop As Outlook.UserProperty
Set olns = ol.GetNamespace("MAPI")
Set cf = olns.GetDefaultFolder(olFolderContacts)
Set objItems = cf.Items
iNumContacts = objItems.Count
If iNumContacts <> 0 Then
For i = 1 To iNumContacts
If TypeName(objItems(i)) = "ContactItem" Then
Set c = objItems(i)
rst!FirstName = c.FirstName
rst!LastName = c.LastName
rst!Address = c.BusinessAddressStreet
rst!City = c.BusinessAddressCity
rst!State = c.BusinessAddressState
rst!Zip_Code = c.BusinessAddressPostalCode
' Custom Outlook properties would look like this:
' rst!AccessFieldName = c.UserProperties("OutlookPropertyName")
MsgBox "No contacts to export."
Article ID: 290792 - Last Review: Jul 13, 2009 - Revision: 1