Robert L. Stewart
rl_stewart at highstream.net
Mon Mar 26 13:12:19 CDT 2007
I don't know how you can paste/append because you have to use the object model of Outlook to do it. Here are the three functions I use to delete, and rebuild the contacts in Outlook from a current Access application. It works with 2000 - 2003. It has not ben tested or tried with 2007. There is also one to backup the Outlook data file. Make sure you have the references set to the Outlook object model and watch out for line wrapping in the code. Function ExportContact() Dim x As Integer Dim db As Database Dim rs As Recordset Dim olkApp As Outlook.Application Dim oNameSpace As Outlook.NameSpace Dim oFolder As Outlook.MAPIFolder Dim oItems As Outlook.Items Dim oContact As Outlook.ContactItem Dim i As Long Dim obj As Object Set olApp = CreateObject("outlook.application") Set oNameSpace = olApp.GetNamespace("MAPI") Set oFolder = oNameSpace.GetDefaultFolder(olFolderContacts) x = 1 DoCmd.Hourglass True DoCmd.SetWarnings False Debug.Print "Deleting old contacts." Call DeleteContacts Debug.Print "Delete complete. Building new list." DoCmd.OpenQuery "MTqry_OutlookExport" DoCmd.SetWarnings True 'Dim myFolder As Outlook.Folders Set db = CurrentDb() Set olkApp = CreateObject("Outlook.Application") Set rs = db.OpenRecordset("tmpTbl_OutlookExport") rs.MoveFirst Debug.Print "Adding contacts" Do Until rs.EOF Set coniNewContact = olkApp.CreateItem(olContactItem) With coniNewContact If Not IsNull(rs!CUS_F_NAME) Then .FirstName = rs!CUS_F_NAME If Not IsNull(rs!CUS_L_NAME) Then .LastName = rs!CUS_L_NAME If Not IsNull(rs!C_TITLENOW) Then .Profession = rs!C_TITLENOW If Not IsNull(rs!PCONAME) Then .CompanyName = rs!PCONAME If Not IsNull(rs!PNAME) Then .OfficeLocation = rs!PNAME If Not IsNull(rs!FullAddress) Then .BusinessAddressStreet = rs!FullAddress If Not IsNull(rs!city) Then .BusinessAddressCity = rs!city If Not IsNull(rs!state) Then .BusinessAddressState = rs!state If Not IsNull(rs!zip) Then .BusinessAddressPostalCode = rs!zip If Not IsNull(rs!PNAMEID) Then .CustomerID = rs!PNAMEID If Not IsNull(rs!SalesRep) Then .Initials = rs!SalesRep If Not IsNull(rs!C_HOME_STR) Then .HomeAddress = rs!C_HOME_STR If Not IsNull(rs!C_HOME_CTY) Then .HomeAddressCity = rs!C_HOME_CTY If Not IsNull(rs!C_HOME_STA) Then .HomeAddressState = rs!C_HOME_STA If Not IsNull(rs!C_HOME_ZIP) Then .HomeAddressPostalCode = rs!C_HOME_ZIP If Not IsNull(rs!C_HOMEPHON) Then .HomeTelephoneNumber = rs!C_HOMEPHON If Not IsNull(rs!C_SPOUSE) Then .Spouse = rs!C_SPOUSE If Not IsNull(rs!C_KIDS) Then .Children = rs!C_KIDS If Not IsNull(rs!EMAIL) Then .Email1Address = rs!EMAIL If Not IsNull(rs!Direct) Then .BusinessTelephoneNumber = rs!Direct If Not IsNull(rs![800]) Then .Business2TelephoneNumber = rs![800] If Not IsNull(rs!FAX) Then .BusinessFaxNumber = "FAX: " & rs!FAX If Not IsNull(rs!Pager) Then .PagerNumber = rs!Pager If Not IsNull(rs!Mobile) Then .CarTelephoneNumber = rs!Mobile If Not IsNull(rs!Other) Then .OtherTelephoneNumber = rs!Other If Not IsNull(rs!Home) Then .HomeTelephoneNumber = rs!Home If Not IsNull(rs!Switchboard) Then .AssistantTelephoneNumber = rs!Switchboard If Not IsNull(rs!Main) Then .CallbackTelephoneNumber = rs!Main Debug.Print x x = x + 1 .Save rs.MoveNext Set coniNewContact = Nothing End With Loop Debug.Print "Finally finished!!!!!!" db.Close Set db = Nothing Set olkApp = Nothing DoCmd.Hourglass False x = MsgBox("Export completed.", vbOKOnly, "Export") End Function Public Sub DeleteContacts() Dim olApp As Outlook.Application Dim oNameSpace As Outlook.NameSpace Dim oFolder As Outlook.MAPIFolder Dim oItems As Outlook.Items Dim oContact As Outlook.ContactItem Dim i As Long Dim obj As Object Set olApp = CreateObject("outlook.application") Set oNameSpace = olApp.GetNamespace("MAPI") Set oFolder = oNameSpace.GetDefaultFolder(olFolderContacts) On Error Resume Next Set oItems = oFolder.Items For i = oItems.Count To 1 Step -1 Set obj = oItems(i) If TypeOf obj Is Outlook.ContactItem Then obj.Delete End If oItems.Remove (i) 'Debug.Print "Record " & i & " of " & oItems.Count '& " Company: " & oContact.CompanyName Next Set olApp = Nothing End Sub Public Sub BackupOutlook() ' this should backup the local copy of Outlook Dim i As Integer With Application.FileSearch .NewSearch .LookIn = "C:\Documents and Settings" .SearchSubFolders = True .FileName = "*.pst" .MatchTextExactly = False .Execute For i = 1 To .FoundFiles.Count Dim src As String, dest As String src = .FoundFiles(i) dest = "c:\My Documents\Outlook_BU\Outlook_" & DatePart("yyyy", Date) & DatePart("m", Date) & DatePart("d", Date) & "_" & i & ".pst" FileCopy src, dest Debug.Print .FoundFiles(i) Next i End With i = MsgBox("Backup completed.", vbOKOnly, "Backup") End Sub At 01:00 PM 3/26/2007, you wrote: >Date: Mon, 26 Mar 2007 16:16:14 +0100 >From: " Eoin C. Bair?ad " <ebairead at gmail.com> >Subject: [AccessD] Creating Contacts in Microsoft Outlook >To: "Access Developers discussion and problem solving" > <accessd at databaseadvisors.com> >Message-ID: > <3d2a5ccc0703260816v1d40a406k3b181bb7bb5bc7e8 at mail.gmail.com> >Content-Type: text/plain; charset=ISO-8859-1; format=flowed > >Hi > >I have a nice query to create new Outlook Contacts, and another query >that allows me to Paste/Append these contacts - I've a link to my >Outlook contacts. > > >Except they're getting appended as Mail Messages rather than Contacts. > >Any ideas ? > >-- >-- >Eoin C. Bair?ad >Dublin, Ireland >?th Cliath, ?ire