Solved

Use Late Binding To Read Address Book in Outlook

Posted on 2008-10-04
9
359 Views
Last Modified: 2012-05-05
Hi,

I am trying to turn this into a late binding function to read the exchange address book within Outlook for vb.net using VS2003 but I suspect on any version. The reason I am using this is my boss does not want to have to import the reference for Outlook. Thanks for any help. This works if not using late binding. Thanks for any help.
 
Sub Main()
 

        ' TODO: Replace My DL Name with a valid distribution list name.

        Dim sDLName As String = "My DL Name"
 

        ' Create an Outlook application.

        Dim oApp As Outlook._Application = New Outlook.Application()
 

        ' Get the MAPI namespace.

        Dim oNS As Outlook.NameSpace = oApp.Session
 

        ' Get the Global Address List.

        Dim oALs As Outlook.AddressLists = oNS.AddressLists

        Dim oGal As Outlook.AddressList = oALs.Item("Global Address List")

        Console.WriteLine(oGal.Name)
 

        ' Get a specific Distribution List.

        Dim oEntries As Outlook.AddressEntries = oGal.AddressEntries

        ' Reference the Distribution List by name.

        Dim oDL As Outlook.AddressEntry = oEntries.Item(sDLName)
 

        Console.WriteLine(oDL.Name)

        Console.WriteLine(oDL.Address)
 

        ' Get all the members of the Distribution List.

        oEntries = oDL.Members

        Dim oEntry As Outlook.AddressEntry

        Dim i As Integer
 

        For i = 1 To oEntries.Count

            oEntry = oEntries.Item(i)

            Console.WriteLine(oEntry.Name)

        Next
 

        ' Clean up.

        oEntry = Nothing

        oEntries = Nothing

        oGal = Nothing

        oALs = Nothing

        oNS = Nothing

        oApp = Nothing

    End Sub

Open in new window

0
Comment
Question by:scorpion53061
  • 6
  • 3
9 Comments
 
LVL 47

Accepted Solution

by:
Wayne Taylor (webtubbs) earned 500 total points
ID: 22641397
Try this....
    Sub Main()
 

        ' TODO: Replace My DL Name with a valid distribution list name.

        Dim sDLName As String = "My DL Name"
 

        ' Create an Outlook application.

        Dim oApp As Object = CreateObject("Outlook.Application")
 

        ' Get the MAPI namespace.

        Dim oNS As Object = oApp.Session
 

        ' Get the Global Address List.

        Dim oALs As Object = oNS.AddressLists

        Dim oGal As Object = oALs.Item("Global Address List")

        Console.WriteLine(oGal.Name)
 

        ' Get a specific Distribution List.

        Dim oEntries As Object = oGal.AddressEntries

        ' Reference the Distribution List by name.

        Dim oDL As Object = oEntries.Item(sDLName)
 

        Console.WriteLine(oDL.Name)

        Console.WriteLine(oDL.Address)
 

        ' Get all the members of the Distribution List.

        oEntries = oDL.Members

        Dim oEntry As Object

        Dim i As Integer
 

        For i = 1 To oEntries.Count

            oEntry = oEntries.Item(i)

            Console.WriteLine(oEntry.Name)

        Next
 

        ' Clean up.

        oEntry = Nothing

        oEntries = Nothing

        oGal = Nothing

        oALs = Nothing

        oNS = Nothing

        oApp = Nothing

    End Sub

Open in new window

0
 

Author Comment

by:scorpion53061
ID: 22641412
Ok this is getting me somewhere but will have an error here for you a second.

First, how to suppress the alert?
Second I don't want ot see the address book. I want ot read the entries. For some reason it is showing me the entries dialog.

Thank you much for your help!
0
 
LVL 47

Expert Comment

by:Wayne Taylor (webtubbs)
ID: 22641433
scorpion53061,

I can't test at the moment (no Outlook), but I see no reason why it would act any differently to when you were using early binding. Did the alert popup before?

Wayne
0
 

Author Comment

by:scorpion53061
ID: 22641463
Ok here is the error (in picture file) and code as it stands now.

' Create an Outlook application.
        Dim oApp As Object = CreateObject("Outlook.Application")

        ' Get the MAPI namespace.
        Dim oNS As Object = oApp.Session

        ' Get the Global Address List.
        Dim oALs As Object = oNS.AddressLists
        Dim oGal As Object = oALs.Item("Global Address List")
        Debug.WriteLine(oGal.Name)

        ' Get a specific Distribution List.
        Dim oEntries As Object = oGal.AddressEntries
        ' Reference the Distribution List by name.
        Dim oDL As Object = oEntries.Item(1)

        Debug.WriteLine(oDL.Name)
        Debug.WriteLine(oDL.Address)

        ' Get all the members of the Distribution List.
        oEntries = oDL.Members

        Dim oEntry As Object
        Dim i As Integer

        For i = 0 To oEntries.Count - 1
            oEntry = oEntries.Item(i)
            Debug.WriteLine(oEntry.Name)
        Next

        ' Clean up.
        oEntry = Nothing
        oEntries = Nothing
        oGal = Nothing
        oALs = Nothing
        oNS = Nothing
        oApp = Nothing

Picture.jpg
0
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 

Author Comment

by:scorpion53061
ID: 22641468
No this error did not appear when using early binding. Again thank you for your help.
0
 
LVL 47

Expert Comment

by:Wayne Taylor (webtubbs)
ID: 22641484
Do these 2 lines write something?

    Debug.WriteLine(oDL.Name)
    Debug.WriteLine(oDL.Address)
0
 

Author Comment

by:scorpion53061
ID: 22641498
Yes they do.
0
 

Author Comment

by:scorpion53061
ID: 22642019
Well if I do the loop onGal it will show users but there appears no way to overcome the security prompt issue which makes it useless to me. But I will give you the points for your efforts. And thank you.
0
 

Author Closing Comment

by:scorpion53061
ID: 31503093
It doesnt overcome the security prompt issue but in no way is that the fault of the individual working with me.
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Welcome my friends to the second instalment and follow-up to our Minify and Concatenate Your Scripts and Stylesheets (http://www.experts-exchange.com/Programming/Languages/.NET/ASP.NET/A_4334-Minify-and-Concatenate-Your-Scripts-and-Stylesheets.html)…
In my previous article (http://www.experts-exchange.com/Programming/Languages/.NET/.NET_Framework_3.x/A_4362-Serialization-in-NET-1.html) we saw the basics of serialization and how types/objects can be serialized to Binary format. In this blog we wi…
Here's a very brief overview of the methods PRTG Network Monitor (https://www.paessler.com/prtg) offers for monitoring bandwidth, to help you decide which methods you´d like to investigate in more detail.  The methods are covered in more detail in o…
In this tutorial you'll learn about bandwidth monitoring with flows and packet sniffing with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're interested in additional methods for monitoring bandwidt…

707 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

16 Experts available now in Live!

Get 1:1 Help Now