Mit Excel-Makro auf MS-Outlookt-Kontaktdaten zugreifen.

  • Excel

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von -manne-.

    Mit Excel-Makro auf MS-Outlookt-Kontaktdaten zugreifen.

    Hallo zusammen,

    ich habe folgendes Problem. Ich möchte in den Kopf eines vorgefertigten Formulars (Excel-Tabelle) mittels Makro eine Adresse einfügen.
    Dafür soll es einen Button geben "Adresse aus Outlook-Kontakten importieren" oder so ähnlich.

    Kann mir jemand sagen wie ich mit VB auf in Outlook geführte Kontakte zugreifen kann?



    Gruß
    Manfred

    Visual Basic-Quellcode

    1. Public Function outlookhomeadresse(strName As String)
    2. Dim objOutlook As Outlook.Application
    3. Dim objContacts As Object
    4. Dim objContact As Outlook.ContactItem
    5. Set objOutlook = Outlook.Application
    6. Set objContacts = GetItems(objOutlook.GetNamespace("MAPI"), olFolderContacts)
    7. For Each objContact In objContacts
    8. With objContact
    9. If .Class = olContact Then
    10. If CStr(objContact) = strName Then
    11. outlookhomeadresse = .HomeAddress
    12. End If
    13. End If
    14. End With
    15. Next
    16. Set objContact = Nothing
    17. Set objContacts = Nothing
    18. Set objOutlook = Nothing
    19. End Function
    20. Private Function GetItems(olNS As Outlook.Namespace, folder As OlDefaultFolders) As Outlook.Items
    21. Set GetItems = olNS.GetDefaultFolder(folder).Items
    22. End Function
    Wow - vielen Dank!
    Der Code übersteigt allerdings mein können. Da muss ich mich erstmal mit der F1 Taste durchkämpfen, und dann in ein paar Tagen darf ich hoffentlich nochmal auf dich zukommen. ;)

    Vieleicht kannst du mir aber erstmal sagen wie ich den Fehler: "Fehler beim Kompilieren: Benuzerdefinierter Typ nicht definiert" in folgender Zeile:

    Quellcode

    1. Private Function GetItems(olNS As Outlook.Namespace, folder As OlDefaultFolders) As Outlook.Items

    wegbekomme.

    Danke
    Manfred

    Vielen Dank - es klappt - wunderbar

    Danke,
    es ist mit gelungen deinen Code so abzuändern das er für meine Awendung funktioniert.
    Die Nachbearbeitung/Auswertung der Variable Kontakt findet in einem andern Makros statt.

    Ich weiß zwar nicht was da genau passiert (vorallem welche aufgabe die "private Funktion" hat), aber es funktioniert.

    Visual Basic-Quellcode

    1. Global Kontakt(1 To 1000, 1 To 10) As String
    2. Global Kontakte_Anz As Integer
    3. Public Function OutlookHomeAdresse()
    4. Dim objOutlook As Outlook.Application
    5. Dim objContacts As Object
    6. Dim objContact As Outlook.ContactItem
    7. Set objOutlook = Outlook.Application
    8. Set objContacts = GetItems(objOutlook.GetNamespace("MAPI"), olFolderContacts)
    9. i = 0
    10. For Each objContact In objContacts
    11. i = i + 1
    12. Kontakt(i, 1) = objContact.FirstName
    13. Kontakt(i, 2) = objContact.LastName
    14. Kontakt(i, 3) = objContact.BusinessAddressStreet
    15. Kontakt(i, 4) = objContact.BusinessAddressCountry
    16. Kontakt(i, 5) = objContact.BusinessAddressPostalCode
    17. Kontakt(i, 6) = objContact.BusinessAddressCity
    18. Kontakt(i, 7) = objContact.OtherAddressStreet
    19. Kontakt(i, 8) = objContact.OtherAddressCountry
    20. Kontakt(i, 9) = objContact.OtherAddressPostalCode
    21. Kontakt(i, 10) = objContact.OtherAddressCity
    22. Next
    23. Kontakte_Anz = i
    24. Set objContact = Nothing
    25. Set objContacts = Nothing
    26. Set objOutlook = Nothing
    27. End Function
    28. Private Function GetItems(olNS As Outlook.Namespace, folder As OlDefaultFolders) As Outlook.Items
    29. Set GetItems = olNS.GetDefaultFolder(folder).Items
    30. End Function

    Gruß
    Manfred
    Eigentlich war das so gedacht, dass du die Funktion mit =outlookhomeadresse(Argument) in den Formeln deine Adressen im Arbeitsblatt nachschlagen kannst. Wenn du schlicht nen Auszug aus deinem Kontaktordner haben willst, dann exportiere doch schlicht die Liste mit Outlook selbst.. Aus dem gleichen Grund solltest die function zur sub machen, wenn du bei deiner Lösung bleibst.
    ja danke, aber ich bleib bei der lösung. in einer andern Funktion werden die kontaktdaten dan vorselektiert und in einer UserForm zur anzeige gebracht. dort werden dann noch such u. sortierfunktionen zur verfügung stehen.
    Hat der User dann seinen gewünschten kontakt ausgewählt werden die entsprechenden Kontktdaten in die Excel-tabelle übernommen.