Solved

VBA Looking Up User in Global Address List

Posted on 2010-09-16
9
7,220 Views
Last Modified: 2013-12-25
So I have the VBA code below, found via Google. References are as shown in the attached bitmap, all in Office 2007.

What I'd like to do is modify the line which dispalys the Global Address List to default to select a specific individual (e.g. I want to use this to look up people in the GAL)
Set orecip = oCDOSession.AddressBook(Nothing, txtCaption, True, True, 1, buttontext, "", "", 0)

when the thing opens. However, I can't find ANY documentation on the Namespace.AddressBook method. Any ideas what each of it's arguements represent, or where there is some documentation on this? (I understand args 2 and 6...)


Sub Main()

    Call Globaladdress("Access-Executive", "Address Book: Global Address List", "Add")

End Sub



Sub Globaladdress(fieldname, caption, buttontext)

    Dim oOutlookApplication As Outlook.Application

    On Error Resume Next

    

    If oOutlookApplication Is Nothing Then

        Err.Clear

        Set oOutlookApplication = CreateObject("Outlook.Application")

    Else

        Set oOutlookApplication = GetObject(, "Outlook.Application")

    End If

    

    Set oCDOSession = CreateObject("Mapi.Session")

    oCDOSession.Logon "", "", False, False, 0

    txtCaption = caption 'The title of the window, e.g. "Address Book: Global Address List"

    

    If Not Err Then

        Set orecip = oCDOSession.AddressBook(Nothing, txtCaption, True, True, 1, buttontext, "", "", 0)

    End If

    

    If Not Err Then

        Item.UserProperties.Find(fieldname).Value = orecip(1).Name

    End If

    

    oCDOSession.Logoff

    oCDOSession = Nothing

    oOutlookApplication = Nothing

End Sub

Open in new window

References.bmp
0
Comment
Question by:travisjbennett
  • 4
  • 3
9 Comments
 
LVL 76

Expert Comment

by:David Lee
ID: 33694016
Hi, travisjbennett.

Forgetting about this code for a minute, what is it that you want to accomplish?  There may be a simpler way to do this.
0
 
LVL 1

Author Comment

by:travisjbennett
ID: 33694072
I already know how to use LDAP via VBA -- I'm just trying to learn the method to give end users a nice pretty recognizable dialog with all the user info in it -- a way to automate looking up someone in the GAL.
All I want to do is pre-select someone (their name highlighted for easy right clicking to properties) in the GAL.
0
 
LVL 76

Expert Comment

by:David Lee
ID: 33749105
Sorry, but I'm not clear on what you have in mind.  Outlook already has a means of searching the GAL and right-clicking to view the properties of an entry.  Are you proposing another means of doing the same thing?  If so, what's the advantage?  If not, then I'm not understanding your goal.
0
 
LVL 1

Author Comment

by:travisjbennett
ID: 33750033
Outlook has the abilities built in, sure...

... But Access does not.

A VBA solution would make it extensible across all of Microsoft Office.

I want to open a user properties form from Access, and add/remove people to lists within Access.
0
Want to promote your upcoming event?

Attending an event? Speaking at a conference? Or exhibiting at a tradeshow? Easily inform your contacts by using a promotional banner in your email signature. This will ensure your organization’s most important contacts are in the know.

 
LVL 76

Expert Comment

by:David Lee
ID: 33750161
You can call Outlook's address book function from any Microsoft Office app using VBA.
0
 
LVL 1

Author Comment

by:travisjbennett
ID: 33750181
How?
0
 
LVL 76

Accepted Solution

by:
David Lee earned 400 total points
ID: 33806293
Sorry to be slow.  Here's how.  Be sure to include a project reference to Outlook.
Sub ShowOutlookAddressBook()
    Dim olkApp As Outlook.Application, olkSes As Outlook.Namespace, olkSND As Outlook.SelectNamesDialog
    Set olkApp = GetObject(, "Outlook.Application")
    Set olkSes = olkApp.Session
    Set olkSND = olkSes.GetSelectNamesDialog
    With olkSND
        .AllowMultipleSelection = True
        .Display
        'The selections the user makes will be in the olkSND.Recipients collection'
    End With
    Set olkSND = Nothing
    Set olkSes = Nothing
    Set olkApp = Nothing
End Sub

Open in new window

0
 
LVL 74

Expert Comment

by:Glen Knight
ID: 34740789
This question has been classified as abandoned and is being closed as part of the Cleanup Program. See my comment at the end of the question for more details.
0

Featured Post

The problems with reply email signatures

Do you wish that you could place an email signature under a reply? Well, unfortunately, you can't. That great Exchange/Office 365 signature you've created will just appear at the bottom of an email chain. What a pain! Is there really no way to solve this? Well, there might be...

Join & Write a Comment

Find out how to use Active Directory data for email signature management in Microsoft Exchange and Office 365.
Following basic email etiquette rules will help you write a professional email and achieve a good, lasting impression with your contacts.
In this video we show how to create a Distribution Group in Exchange 2013. We show this process by using the Exchange Admin Center. Log into Exchange Admin Center.: First we need to log into the Exchange Admin Center. Navigate to the Recipients >>…
In this Micro Video tutorial you will learn the basics about Database Availability Groups and How to configure one using a live Exchange Server Environment. The video tutorial explains the basics of the Exchange server Database Availability grou…

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now