Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Prüfen ob Outlook-Kontakt bereits vorhanden...

Prüfen ob Outlook-Kontakt bereits vorhanden...
KLE
Hi,
sorry, dass ich auf meine letzten Fragen noch kein Feedback gegeben habe. Dies lag an 2 Dingen: zum einen war aus gesundheitlichen und beruflichen Dingen lange nicht mehr an einen Rechner gekommen und nun, wollte ich noch antworten - kann Sie aber im Forum nicht aufrufen. Nur über "meine" Beiträge oder der Suche, doch hier kann ich nicht auf einen Eintrag "antworten"...
Danke an dieser Stelle für die Mühen und tollen Feedbacks...
Jedoch muss ich heut mich noch einmal an Euch wenden, da ich immer noch ein Problem mit dem Export von Kontaktdaten aus Excel nach Outlook habe. ich möchte gern, das - bevor ein Kontakt exportiert wird, Excel prüft - ob dieser nicht vielleicht schon im ausgewählten Ordner vorhanden ist.
Prüfkriterium ist die Kombination aus: "Name" + "Vorname" + "Firma"
Ich hatte zwar einen Code - aber der funktioniert nicht sicher. Er läuft zwar durch, aber er lässt doppelte zu aber auch nicht immer...
Über einen Code wäre ich sehr sehr dankbar, der folgendes abbildet:
- User wählt Kontaktordner aus
- Dann wird per Schleife jeder Kontakt aus einer Tabelle (bzw. Array) exportiert.
- Dazu wird zuvor der vorhandene Ordner nach dem Suchkriterium überprüft und wenn der Kontakt bereits vorhanden ist, dann soll dieser überschrieben - ansonsten eben neu angelegt werden.
Am Ende eine Anzeige, wie viele aktualisiert und wie viele Neu angelegt wurden.
Ich danke Euch von tiefstem Herzen...
Lieben Gruß
Kay

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Prüfen ob Outlook-Kontakt bereits vorhanden...
18.12.2011 11:29:55
Michael
Hallo Kay!
Ich kenne das Problem. Um den Kontakt zu finden, musst Du den Namen genau wieder so zusammensetzen, wie er vorher an Outlook übergeben wurde. Hast Du also eine Änderung oder Aktualisierung im Namen, wird der Kontakt nicht mehr gefunden. Ich bin daher dazu übergegangen, eine CustomID zu setzen. Sowas wie eine Kundennummer. Wird diese dann gefunden, kannst Du die weiteren Aktionen bestimmen. Mit folgendem Code findest Du den Kontakt:
Set oOl = CreateObject("Outlook.Application")
Set oNsp = oOl.GetNamespace("MAPI")
Set oFolder = oNsp.GetDefaultFolder(olFolderContacts)
Set oContact = oFolder.Items.Add
'VARIABLEN ZUM LÖSCHEN
Set oContactALT = oFolder.Items.Add
Set oItems = oFolder.Items
sFilter = "[MessageClass] = 'IPM.Contact'"
Set oResItems = oItems.Restrict(sFilter)
'VORHANDENEN KONTAKT LÖSCHEN, DAMIT DUBLETTEN NICHT VORKOMMEN
For Each oContactALT In oResItems
'NACH INDEX BZW. KUNDENNUMMER LÖSCHEN
If oContactALT.CustomerID = >Hier Deine Kundennummer eingeben oContactALT.Delete
Exit For
End If
Next oContactALT
Möchtest Du mehrere Kontakte anlegen, ist es allerdings viel schneller, erst mal alle Kontakte zu löschen und dann neu anzulegen. Diese Schleife oben benötigt ordentlich Zeit. Um dabei die Kontakte in der Hinsicht zu selektieren, ob sie aus deinem VBA-Code angelegt sind, solltest Du auch wieder auf die Custom-ID zugreifen und nur löschen, wenne ine vorhanden ist.
Viel Erfolgt
Michael H
Anzeige
Werd's versuche, aber ich habe da noch Fragen...
18.12.2011 14:02:09
KLE
...zu dem Code.
Ich bin mit Outlook irgendwie noch nicht "grün", bzw. verstehe ich einige Codes noch nicht so recht. Auch die Hilfe, kann es nicht immer so erklären - dass ich (der Excel nur ab und zu nutzt) es leicht versteht.
Vielleicht kann man mir hier helfen:
z.B.:
Set oResItems = oItems.Restrict(sFilter)
Was für eine Variable (TYP) wäre in diesem Fall "oResItems"? In einigen Codes wird es als "Object" ausgewiesen und in anderen als "Outlook.ContactItem"...
Andere Frage:
Ich kann entweder per For - Schleife einen Ordner durchsuchen mit "For i = mapi.folder.items.count to 0 step-1 ...
oder per "For each item in mapi.folder"...
Wann setzt man welche Variante ein und warum ? Was ist schneller?
Zu meinem Problem mit dem Export:
Das mit der ID ist richtig - ich verwende diese auch innerhalb der Kontaktliste in Excel. Nur, diese Liste wird von ca. 30 Außendienstlern und einigen Internen verwendet und alle haben unterschiedliche Kontakte in Ihrem Outlook.
Daher kann ich nur die Suche nach doppelten per "Suchstring" im Vorfeld versuchen, um Kontakte aus der Liste zu exportieren. Aber hier fand ich bisher noch keine optimale schnelle Lösung?
Ich kann auch nicht vorher alle "löschen", da es einige Kontakte gibt, welche behalten werden sollen ;o)
Also bleibt mir nichts anderes übrig, wie den Kontaktordner zu durchsuchen und wenn ein Kontakt per Suchstring gefunden wurde, muss dieser mit den Daten aus er Excel aktualisisert werden, bzw. eben neu angelegt werden - wenn noch nicht vorhanden war.
Ich kann auch nicht einen bestehenden Kontakt löschen. Denn dieser enthält auch Infos, die drin bleiben sollten...daher soll hier nur die Felder mit den Daten aus der Excel aktualisert werden, welche von Excel übergeben werden.
Ich danke Euch für jede Idee, Anregung oder ähnlichem...
Gruß und ein tollen Adventssonntag noch...
Kay
Anzeige
AW: Werd's versuche, aber ich habe da noch Fragen...
22.12.2011 08:39:21
Michael
Hallo Kay!
Also ich stelle immer wieder Dubletten fest, wenn ich nicht vorher lösche. Wenn Du Am Anfang des Kontaktnamens eine eindeutige Kennung setzt, kann der Kontakt leicht von den individuellen Kontakten auseinander gehalten werden. Dann kannst Du gezielt löschen.
VG
Michael H

317 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige