![]() |
Kotaktgruppen aus Kontakte von Outlook
Hallo,
ich suche mich schon dusselig. Ich habe folgenden Code. ![]() Der wird hier im Forum öfters erwähnt. Das klappt auch wunderbar. Problem ist allerdings wenn man eine Kontaktgruppe hat. Dann kommt folgender Fehler: Die Methode 'FirstName' wird vom Automatisierungsobjekt nicht unterstützt. Wie komme ich an die Daten die in den Kontaktgruppen stehen? Vielen dank im Voraus |
AW: Kotaktgruppen aus Kontakte von Outlook
Jedes Item hat eine Eigenschaft
Delphi-Quellcode:
und die hat bei einem
Class
Delphi-Quellcode:
den Wert
ContactItem
Delphi-Quellcode:
und bei einem
40
Delphi-Quellcode:
den Wert 69.
DistListItem
Daran kannst du diese unterscheiden. |
AW: Kotaktgruppen aus Kontakte von Outlook
Hi,
erstmal danke für die Antwort. Schau mal was ich gemacht habe. Wo müsste denn die Class stehen und wie wechslen ich dann in die Gruppe?
Delphi-Quellcode:
Nicht wundern wenn es sch.... aussieht. Ich Fummel da nun schon lange dran rum. Das habe ich mir auf folgenden Seiten "zusammen gereimt".
procedure TForm1.Button1Click(Sender: TObject);
const olFolderContacts = $0000000A; var flds, outlook, NameSpace, Contacts, Contact: OleVariant; i: Integer; begin outlook := CreateOleObject('Outlook.Application'); NameSpace := outlook.GetNameSpace('MAPI'); Contacts := NameSpace.GetDefaultFolder(olFolderContacts); flds := NameSpace.Folders(1); WriteLn(flds.Name); //<<--- Ich dachte hier müsste die erste Gruppe stehen, sofern vorhanden. for i := 1 to Contacts.Items.Count do begin Contact := Contacts.Items.Item(i); Writeln('-----------------------'); WriteLn('Vor und Nachname: '+Contact.FirstName+' '+Contact.LastName); //Wenn es eine Gruppe ist, gibt es hier den Fehler: Die Methode 'FirstName' wird vom Automatisierungsobjekt nicht unterstützt. WriteLn('Firma: '+Contact.CompanyName); WriteLn('FirmaTel.: '+Contact.BusinessTelephoneNumber); WriteLn('FirmaFax: '+Contact.BusinessFaxNumber); WriteLn('EMailadr.: '+Contact.Email1Address); WriteLn('Adresse: '+Contact.BusinessAddress); WriteLn; end; Outlook := UnAssigned; end; ![]() ![]() Ich bekomme aber nur meine Mailadresse zurück. Nicht den Namen der Gruppe die ich in Kontakte angelegt habe. Nehme ich statt Namespace.Folders(1); Contacts.Folders(1); kommt Array-Index außerhalb des zulässigen Bereichs. |
AW: Kotaktgruppen aus Kontakte von Outlook
Der größte Fehler ist die Benamung der Variablen, denn die führen dich aufs falsche Gleis. Ein weiterer Fehler ist, dass du es bislang versäumt hast in die Doku zu schauen.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const olFolderContacts = $0000000A; var flds, outlook, NameSpace, ContactFolder, Item: OleVariant; i: Integer; begin outlook := CreateOleObject('Outlook.Application'); NameSpace := outlook.GetNameSpace('MAPI'); ContactFolder := NameSpace.GetDefaultFolder(olFolderContacts); for i := 1 to ContactFolder.Items.Count do begin Item := ContactFolder.Items.Item(i); // Hier stellt sich bei dem Item die berühmte Frage: "Was bin ich?" if Item.Class = 40 then // ein ContactItem begin end else if Item.Class = 69 then // ein DistListItem begin end; end; Outlook := UnAssigned; end; |
AW: Kotaktgruppen aus Kontakte von Outlook
Hi,
erst mal 1.000 dank für deine Hilfe. So ergibt es sinn. Wie gesagt, ich änder an dem Code seit gestern rum. Wenn ich ehrlich bin habe ich schon nixmehr gepeilt. Eine einzige Frage hätte ich da noch. Keine angst, gegoogelt hab ich schon. Ich find aber nicht wie ist an die Daten in der Distlist komme. Mit .MemberCount kann ich die schleife "eröffnen". Dann kann ich mit GetMember(i) die Daten hohlen. Ich finde aber nur .Name. Kann man das nicht FirstName, LastName, CompanyName usw. abfragen? EDIT: Nachtrag: So wie ich das sehe muss das ähnlich FindFirst, Findnext laufen. Richtig? Also Rekursiv. Nachtrag 2: Ich kann die EntryID lesen. Ist es vielleicht damit möglich an die Daten zu kommen? |
AW: Kotaktgruppen aus Kontakte von Outlook
Tut mir leid. Habe nun die ganze Zeit gesucht. Finde nur diese Seiten. Auch ALLE Beispiele die ich gefunden habe, missachten das DistListItem. Das heißt im Umkehrschluss ich komme an dieser Stelle einfach nicht weiter. Wäre toll wenn dir nochwas einfällt.
Das find ich zu ContactItem ![]() Das zu DistListItem ![]() Netten Gruß und danke im Voraus |
AW: Kotaktgruppen aus Kontakte von Outlook
DistListItem hat eine Methode
![]() Diese liefert einen ![]() Dies hat eine Eigenschaft ![]() ![]() Und das hat dann schlussendlich eine Methode ![]() Das war das kleine Doku-EinmalEins ... Darauf kommen kann man aber auch durch ![]() ;) |
AW: Kotaktgruppen aus Kontakte von Outlook
Zitat:
Was ich aber auch erstaunlich fand, ist das ALLE Beispiele die ich gefunden habe, sei es Delphi, VB, C(++) diese DistlistItem missachten. Nicht ein example hat die Class abgefragt. Das muss doch dann genauso "scheppern" wie bei mir, wenn Gruppen angelegt sind. Ich werde mich nun dranmachen und "versuchen" das umzusetzen was du geschrieben hast. Auf jeden fall vielen vielen dank für deine Hilfe. |
AW: Kotaktgruppen aus Kontakte von Outlook
Ich wette da haben einige "ganz Schlaue" einfach blind von einem abgeschrieben. ;)
Compiliert und läuft unter Idealbedingungen. Mit dem Thema wirklich auseinandergesetzt hat sich da niemand (bis auf den Ersten, aber der hat das auch nur mit der heissen Nadel zusammengeklopft). Es gibt übrigens in der Doku auch eine komplette Liste der Klassen-Nummern. Da ist man gut beraten, diese als Konstanten zu definieren ;) |
AW: Kotaktgruppen aus Kontakte von Outlook
Hi Sir Rufo,
also, ich scheine auch zu dumm zu sein. Ich bekomme es nicht hin.
Delphi-Quellcode:
müsste doch richtig sein, oder? z.b.
Item.GetMember(1).AddressEntry.GetContact.FirstName
Delphi-Quellcode:
geht. Dort bekomme ich den Namen zurück.
Item.GetMember(1).AddressEntry.Name
Sobald ich aber GetContact hinter AddressEntry habe, kommt die Fehlermeldung... Das element kann nicht gefunden werden. Langsam Zweifel ich bissl an mir. Ich nutze das in folgendem System... Windows 7 x64 Outlook 2010 Delphi 2007 Das "Programmgerüst" ist oben das von dir. Wäre toll wenn du mir noch einmal Helfen könntest. Gruß und danke im Voraus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz