![]() |
Windows 7 Professional Integrating Access Contacts
There was a question on our post about getting Access to recognize tables as specific WSS table templates around what else you need to do to get the new Add From Outlook feature to work on a custom contacts table. This feature uses the same mechanism to determine that a table is a contact table, but more than that it needs to know how to map fields in your table to those in the Outlook contact store. There are a bunch of fields, so easier than building this out yourself, here's a quick snippet of VBA that will take any table, and make it into a contacts table. Just plop this into your solution, then update the table name and field names to reflect the fields in your custom contacts implementation, and run it.
' ----------------------------------------------- ' READ THIS ' Make edits to the string values in the ' MakeContacts Sub below to match up ' with your table and field names. ' ' You shouldn't need to change the rest of ' this code. ' ----------------------------------------------- ' CI is for ContactInfo Enum CI First Last Company JobTitle WorkPhone HomePhone CellPhone WorkFax WorkAddress WorkCity WorkState WorkZip WorkCountry WebPage Comments End Enum ' Each field map item maps between a field ' name in the Access table and a property ' name Access maps to Outlook and SharePoint ' contact field info. Type FieldMap prop As String Field As String End Type ' This Varible lists all the proeprties that ' can be mapped to Contact info. You fill ' it with the corresponding field names from ' your table. Dim Map(CI.Comments) As FieldMap Public Sub MakeContacts() Dim strTable As String Dim fm As FieldMap Dim td As TableDef Dim db As Database ' ----------------------------------------------- ' UPDATE THESE STRINGS ' to match the table and field names in ' your app. It is okay not to set some if you ' don't have an equivalent. ' Set this to your table name strTable = "Table1" ' Set these to your field names Map(CI.First).Field = "First" Map(CI.Last).Field = "Last" Map(CI.Email).Field = "Email" Map(CI.Company).Field = "Org" Map(CI.JobTitle).Field = "Job" Map(CI.WorkPhone).Field = "Work" Map(CI.HomePhone).Field = "Home" Map(CI.CellPhone).Field = "Cell" Map(CI.WorkFax).Field = "Fax" Map(CI.WorkAddress).Field = "Addr" Map(CI.WorkCity).Field = "City" Map(CI.WorkState).Field = "State" Map(CI.WorkZip).Field = "Zip" Map(CI.WorkCountry).Field = "Country" Map(CI.WebPage).Field = "WWW" Map(CI.Comments).Field = "Notes" ' END OF STRINGS TO UPDATE ' ----------------------------------------------- ' This the code to mark fields in ' your local table with the correct ' Outlook and SharePoint field names. ' ' You shouldn't need to change this. SetupContactProps Set db = CurrentDb Set td = db.TableDefs(strTable) ' Set the table level property that tells Access ' this is a Contact table. SetProp td, "WSSTemplateID", dbInteger, 105 ' For each mapped field, set the correct ' contacts property. For i = 0 To CI.Comments fm = Map(i) If Len(fm.Field) > 0 Then SetProp td.Fields(fm.Field), "WSSFieldID", dbText, fm.prop End If Next End Sub ' This code initializes the contact property ' names that Access uses to map contact info ' to SharePoint or Outlook. ' ' You shouldn't need to change this. Sub SetupContactProps() Map(CI.First).prop = "FirstName" Map(CI.Last).prop = "Title" Map(CI.Email).prop = "Email" Map(CI.Company).prop = "Company" Map(CI.JobTitle).prop = "JobTitle" Map(CI.WorkPhone).prop = "WorkPhone" Map(CI.HomePhone).prop = "HomePhone" Map(CI.CellPhone).prop = "CellPhone" Map(CI.WorkFax).prop = "WorkFax" Map(CI.WorkAddress).prop = "WorkAddress" Map(CI.WorkCity).prop = "WorkCity" Map(CI.WorkState).prop = "WorkState" Map(CI.WorkZip).prop = "WorkZip" Map(CI.WorkCountry).prop = "WorkCountry" Map(CI.WebPage).prop = "WebPage" Map(CI.Comments).prop = "Comments" End Sub ' This is a helper routine which sets a property ' value first checking to see whether one already ' exists. Sub SetProp(o As Object, strProp As String, dbType As DataTypeEnum, oValue As Variant) Dim p As Property On Error GoTo NotFound Set p = o.Properties(strProp) GoTo Found NotFound: Set p = CurrentDb.CreateProperty(strProp,Windows 7 Professional, dbType, oValue) o.Properties.Append p Found: If p.Type = dbType Then p.value = oValue Else o.Properties.Delete (strProp) Set p = CurrentDb.CreateProperty(strProp, dbType, oValue) End If End Sub <div |
All times are GMT. The time now is 12:47 AM. |
Powered by vBulletin Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Free Advertising Forums | Free Advertising Message Boards | Post Free Ads Forum