[AccessD] modifying Outlook contact items from Access

Erwin Craps - IT Helps Erwin.Craps at ithelps.be
Thu Jan 22 15:18:42 CST 2004


Hi Susan

Here's some code that creates contacts in Outlook from Access.
The function needs adapting, cause I grabbed it right of my app...




Public Function CreateContactsInOutlook()
    ' Comments  :
    ' Parameters:  -
    ' Modified  :
    '
    ' --------------------------------------------------
    'TVCodeTools ErrorEnablerStart
    On Error GoTo PROC_ERR
    'TVCodeTools ErrorEnablerEnd
    
    Dim oOut As Outlook.Application
    Dim oNSpace As Outlook.NameSpace
    Dim oFolderContact As Outlook.MAPIFolder
    Dim oFolder As Outlook.MAPIFolder
    Dim objOItem As Object
    Dim strFolderName As String
    Dim rsCust As Recordset
    Dim strSQL As String
    Dim intCounter As Integer
    Dim lngItemCounter As Long
    Dim varCUST_GID As Variant
    
    DoCmd.Hourglass True
    
    Set oOut = Outlook.Application
    Set oNSpace = oOut.GetNamespace("MAPI")
    Set oFolderContact = oNSpace.GetDefaultFolder(olFolderContacts)
    
    'Create Folders
    strFolderName = "IT Helps Relations"
    On Error Resume Next
    Set oFolder = oFolderContact.Folders(strFolderName)
    If Err <> 0 Then
            On Error GoTo PROC_ERR
            Set oFolder = oFolderContact.Folders.Add(strFolderName,
olFolderContacts)
        Else
            For lngItemCounter =
oFolderContact.Folders(strFolderName).Items.Count To 1 Step -1
 
oFolderContact.Folders(strFolderName).Items(lngItemCounter).Delete
                DoEvents
            Next lngItemCounter
    End If
    On Error Resume Next
    oFolder.ShowAsOutlookAB = True
    On Error GoTo PROC_ERR
    
    
    strSQL = "SELECT CUST_Main.*, CUST_Names.CUST_LID,
CUST_Names.Mailing ,CUST_Names.Language_LID, SUB_L_Titles.Title,
SUB_L_Titles.LetterStart, CUST_Names.FirstName, CUST_Names.SurName,
CUST_Names.DirectFax, CUST_Names.DirectPhone, CUST_Names.Email,
CUST_Names.GSMnumber, SUB_L_Countries.Country " _
        & "FROM SUB_L_Countries RIGHT JOIN (CUST_Main LEFT JOIN
(SUB_L_Titles RIGHT JOIN CUST_Names ON SUB_L_Titles.Title_LID =
CUST_Names.Title_LID) ON CUST_Main.CUST_GID = CUST_Names.CUST_GID) ON
SUB_L_Countries.Country_LID = CUST_Main.Country_LID " _
        & "WHERE CUST_Names.Mailing = true " _
        & " ORDER BY CUST_Main.CUST_GID;"
    
    Set rsCust = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
    
    With rsCust
        Do While rsCust.EOF = False
            'Save Main company data
            If varCUST_GID <> .Fields("CUST_GID") Then
                If (Nz(.Fields("MainPhone")) <> "") Or
(Nz(.Fields("EmailAddress")) <> "") Then
                    Set objOItem =
oFolderContact.Folders(strFolderName).Items.Add(olContactItem)
                    objOItem.BusinessAddressCity = Nz(.Fields("City"))
                    objOItem.BusinessAddressCountry =
Nz(.Fields("Country"))
                    objOItem.BusinessAddressPostalCode =
Nz(.Fields("Postalcode"))
                    objOItem.BusinessAddressStreet =
Nz(.Fields("Street"))
                    objOItem.BusinessFaxNumber =
InternationalPhone(Nz(.Fields("MainFax")))
                    objOItem.BusinessTelephoneNumber =
InternationalPhone(Nz(.Fields("MainPhone")))
                    objOItem.CompanyName = Nz(.Fields("Company"))
                    objOItem.CustomerID = Nz(.Fields("CUST_GID"))
                    objOItem.Email1AddressType = "SMTP"
                    objOItem.Email1Address = Nz(.Fields("EmailAddress"))
                    objOItem.Fullname = Nz(.Fields("Company"))
                    objOItem.FileAs = objOItem.Fullname
                    objOItem.Save
                End If
            End If
            
            'Save Contact person data
            If (Nz(.Fields("DirectPhone")) <> "") Or
(Nz(.Fields("GSMnumber")) <> "") Or (Nz(.Fields("Email")) <> "") Then
                Set objOItem =
oFolderContact.Folders(strFolderName).Items.Add(olContactItem)
                objOItem.BusinessAddressCity = Nz(.Fields("City"))
                objOItem.BusinessAddressCountry = Nz(.Fields("Country"))
                objOItem.BusinessAddressPostalCode =
Nz(.Fields("Postalcode"))
                objOItem.BusinessAddressStreet = Nz(.Fields("Street"))
                objOItem.BusinessFaxNumber =
InternationalPhone(Nz(.Fields("DirectFax")))
                objOItem.BusinessTelephoneNumber =
InternationalPhone(Nz(.Fields("DirectPhone")))
                objOItem.MobileTelephoneNumber =
InternationalPhone(Nz(.Fields("GSMnumber")))
                objOItem.CompanyName = Nz(.Fields("Company"))
                objOItem.CustomerID = Nz(.Fields("CUST_LID"))
                objOItem.Email1AddressType = "SMTP"
                objOItem.Email1Address = Nz(.Fields("Email"))
                objOItem.FirstName = Nz(.Fields("Firstname"))
                objOItem.LastName = Nz(.Fields("Surname"))
                objOItem.Title = Nz(.Fields("Title"))
                objOItem.Fullname = Nz(.Fields("Surname")) & ", " &
Nz(.Fields("Firstname"))
                objOItem.FileAs = objOItem.Fullname
                objOItem.Save
            End If
            varCUST_GID = .Fields("CUST_GID")
            .MoveNext
        Loop
    End With
    
    
    'TVCodeTools ErrorHandlerStart
PROC_EXIT:
    On Error Resume Next
    rsCust.Close
    Set rsCust = Nothing
    Set oFolder = Nothing
    Set oFolderContact = Nothing
    Set oNSpace = Nothing
    Set oOut = Nothing
    DoCmd.Hourglass False
    MsgBox "Finished!"
    Exit Function
    
PROC_ERR:
    Select Case Err
        Case 0
            'Do Nothing
        Case Else
            MsgBox Err.Description & vbCrLf & "CreateContactsInOutlook",
vbOKOnly, "ERROR:" & Err.Number
            Resume PROC_EXIT
    End Select
    'TVCodeTools ErrorHandlerEnd
    
End Function




-----Oorspronkelijk bericht-----
Van: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] Namens MartyConnelly
Verzonden: donderdag 22 januari 2004 21:04
Aan: Access Developers discussion and problem solving
Onderwerp: Re: [AccessD] modifying Outlook contact items from Access


There is an Exchange OLEDB Provider available for those that use it.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wss/wss
/_exch2k_search_tasks.asp
And this method might work

This article describes how you can open a connection to a Microsoft 
Exchange or to a Microsoft Outlook mailbox by using ActiveX Data Objects

(ADO) and the Jet OLE DB provider
http://support.microsoft.com/?kbid=275262

Susan Harkins wrote:

>This is for instructional purposes, so I have to do it the long hard 
>way. :)
>
>I can import the data into Access, modify it, and send it back to 
>Outlook. I'm just wondering if there isn't a more direct route -- it 
>would be cool if I could connect an Access form's to a recordset that's

>connected directly to Outlook -- so the changes in Access would be 
>immediate -- I just don't know if that's possible, or even the best way

>to go about it.
>
>Susan H.
>
>
>  
>
>>Hi Susan
>>Well I cheat. I have a number of Outlook address books some of which 
>>are based on Access data. I use a 3rd-party product which each night 
>>wipes out these address books, extracts the Access data and rebuilds 
>>the address books. Works like a charm. I could no doubt write 
>>something but as the product existed..... See 
>>http://www.teamscope.com/otherpro/datalink.asp
>>
>>
>>Andy Lacey
>>http://www.minstersystems.co.uk
>>
>>    
>>
>>>-----Original Message-----
>>>From: accessd-bounces at databaseadvisors.com
>>>[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Susan 
>>>Harkins
>>>Sent: 22 January 2004 17:26
>>>To: AccessD at databaseadvisors.com
>>>Subject: [AccessD] modifying Outlook contact items from Access
>>>
>>>
>>>I'm familiar enough with the Outlook model that importing Contact 
>>>data into Access is easy -- but I'm wondering if any of you use 
>>>Access to actually modify Outlook contact information? I haven't even

>>>started, but would be interested in hearing how others do it. I know 
>>>you can link, but that only works if Outlook is the default mail 
>>>client.
>>>
>>>Susan H.
>>>
>>>_______________________________________________
>>>AccessD mailing list
>>>AccessD at databaseadvisors.com 
>>>http://databaseadvisors.com/mailman/listinfo/a> ccessd
>>>Website:
>>>http://www.databaseadvisors.com
>>>
>>>
>>>      
>>>
>>_______________________________________________
>>AccessD mailing list
>>AccessD at databaseadvisors.com 
>>http://databaseadvisors.com/mailman/listinfo/accessd
>>Website: http://www.databaseadvisors.com
>>
>>    
>>
>
>_______________________________________________
>AccessD mailing list
>AccessD at databaseadvisors.com 
>http://databaseadvisors.com/mailman/listinfo/accessd
>Website: http://www.databaseadvisors.com
>
>  
>

-- 
Marty Connelly
Victoria, B.C.
Canada



_______________________________________________
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com


More information about the AccessD mailing list