Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Kontakte in Öffentliche Ordner lesen (https://www.delphipraxis.net/77970-kontakte-oeffentliche-ordner-lesen.html)

Techcrawler 27. Sep 2006 11:14


Kontakte in Öffentliche Ordner lesen
 
In meiner Anwendung muss ich die Firmenkontakte aus Outlook importieren, diese liegen allerdings in Unterordnern in den Öffentlichen Ordnern. Wie komme ich nun da ran?

Ich habe bisher versucht, die ganzen Ordner als csv zu exportieren und dann via Jedi wieder einzulesen, allerdings fliegt mir die Jedi Komponente immer ab (Zuviele Spalten oder einfach 'Fehler in Kopfdaten', was vielsagend ist).

Nun habe ich schon diverse Lösungen hier im Forum gesucht, diese funktionieren auch recht gut, allerdings nur mit dem 'Kontakte' Ordner, den ich im persönlichen Outlook habe.

Ich benötige aber die Ordner in den 'Öffentlichen Ordner'n, da dort Firmenweit alle Kontakte abgelegt werden.
So wie ich das sehe, brauche ich folgende Schritte:
- Outlook verbindung herstellen -> erledigt
- Ordnername der 'Öffentlichen Ordner' herausfinden -> ??? [NameSpace.GetDefaultFolder(???)]
- Unterordner mit Namen finden -> ???
- Auslesen der Kontakte -> sollte mit 'Contacts.Item...' funktionieren (aus den Beispielen hier)
- Outlook schließen -> erledgt mit 'Outlook := UnAssigned;'

Wäre super, wenn mir hierbei einer weiterhelfen könnte.
Auch eine Lösung bezüglich des fehlgeschlagenen csv imports mit jedi (TJvCsvDataSet aus JVCL320CompleteJCL197-Build2172) bringt mich weiter, es muss nicht unbedingt mit MAPI gehen.

mkinzler 27. Sep 2006 11:20

Re: Kontakte in Öffentliche Ordner lesen
 
Alternative f+r CSV-Import
-kbmMemTable: http://www.components4developers.com/
-selber Zerlegen

timog 27. Sep 2006 11:55

Re: Kontakte in Öffentliche Ordner lesen
 
Hi,

hier mal etwas VBA, vielleicht hilft es Dir ja. Denn der Export über CSV ist wegen der vielen GUIDs (EntryID etc.) nicht sonderlich praktikabel. Problem hatte ich auch schon :-)
Code:
Dim ol As Outlook.Application
Dim ns As Outlook.NameSpace
Dim pub As MAPIFolder
Dim c As Outlook.ContactItem

Set ol = CreateObject("Outlook.Application")
Set ns = ol.GetNamespace("MAPI")
Set pub = ns.Folders("Öffentliche Ordner").Folders("Alle Öffentlichen Ordner").Folders("Firmenkontakte")

MsgBox "Elemente: " & pub.Folders(1).Items.Count
MsgBox "Erster Eintrag: " & pub.Folders(1).Items(1).Subject
Wenn Du dann noch dem Objekt "c" im Beispiel oben das jeweilig aktuelle Contact Item zuweist, kannst Du bequem auf die Eigenschaften der Objekte zugreifen, z.B. mit
Delphi-Quellcode:
sFirma:= c.CompanyName            
sEmail:= c.Email1Address
sStreet:=c.BusinessAddressStreet
sPLZ:=c.BusinessAddressPostalCode
sCity:=c.BusinessAddressCity
Schau Dir ansonsten mal http://www.outlookcode.com/d/code/getfolder.htm an. Eine VBA Funktion zum Auswählen eines Folders. Ich mache es übrigens oft so, dass ich erst in VBA den Code ans laufen bekomme bevor ich ihn nach Delphi portiere. Klappt oft, aber nicht immer ohne Klimmzüge (z.B. für FOR EACH).

Viele Grüße und Erfolg

Timo


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz