Suchreihenfolge der Kontakte per VBA

Moderator: ModerationP

Suchreihenfolge der Kontakte per VBA

Beitragvon TomWest » 19. Nov 2018, 22:18

Guten Abend!

Gibt es eigentlich "irgendetwas" woran sich VBA orientiert, wenn es in einer Schleife nach einem Kontakt sucht?
Also in einem ganz simplen, stark verkürzten Beispiel:
Code: Alles auswählen
If .FirstName = "SchönerVorname" Then

Mir scheint die Suchreihenfolge total willkürlich zu sein. Habe mir mal alle Kontakte auflisten lassen, die das System auf .FirstName angefasst hat, bevor es den gesuchten gefunden hat. Alphabetisch betrachtet waren mal welche davor, mal welche dahinter ... und irgendwann dann endlich mal der gesuchte :?

Hintergrund? Ich würde gerne die Suche nach DEM Kontakt zwischen vielen Hundert stark verkürzen wollen. Ich kann den Kontakt gerne umbenennen, es geht nur um DEN einen. Aber dafür müsste ich die Suchlogik verstehen.

Besten Dank schon mal für ein weiteres helles Licht :idea: :wink:
Gruß Tom
TomWest
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 237
Registriert: 18. Jan 2014, 12:14

Re: Suchreihenfolge der Kontakte per VBA

Beitragvon mmarkus » 20. Nov 2018, 07:17

TomWest hat geschrieben:Gibt es eigentlich "irgendetwas" woran sich VBA orientiert, wenn es in einer Schleife nach einem Kontakt sucht?


Du suchst in einer Schleife?
Bitte nicht wundern wenn das langsam ist.
Zur Suche gibt es die Methoden Find und Restrict.
Genau Infos gibts in der Hilfe.

Edit: Aber wenn es wirklich nur darum geht einen Kontakt zu laden, dann geht das auch über die EntryID.
Über die Methode Session.GetItemFromID kannst du jedes beliebige Objekt direkt laden.
ms access what else
mmarkus
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1646
Registriert: 16. Apr 2012, 16:07
Wohnort: Oberösterreich

Re: Suchreihenfolge der Kontakte per VBA

Beitragvon TomWest » 20. Nov 2018, 16:25

Hallo Markus,

wie schön, dass man jeden Tag etwas dazu lernen kann! Und wie schade, dass man bis dahin oft viele Fehler machen oder zumindest wertvolle Zeit vergeuden muss.

Die Methoden Find und Restrict werde ich mir definitiv angucken.

DIE Lösung für mich dürfte in dem Fall aber auf jeden Fall die Methode Session.GetItemFromID sein :idea:
Natürlich habe ich bereits versucht mich schlauzulesen.
"Ein MAPI-Anbieter weist eine eindeutige ID-Zeichenfolge an, wenn ein Element im Speicher erstellt wird. Aus diesem Grund wird EntryID -Eigenschaft für ein Outlook-Element nicht festgelegt, bis es gespeichert oder gesendet wird."
Das sagt schon recht viel. Aber gib mir bitte noch ´n Schubs in die richtige Richtung. Wo genau ist die eindeutige ID denn in einem Kontakt zu finden? Bzw. wie kann ich sie auslesen und dann umgekehrt ansprechen?
Gruß Tom
TomWest
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 237
Registriert: 18. Jan 2014, 12:14

Re: Suchreihenfolge der Kontakte per VBA

Beitragvon TomWest » 20. Nov 2018, 16:55

Ah, schon gut, hab´s selber herausgefunden :-)
Viel einfacher als ich dachte. Falls es noch jemand braucht:
Nach bekannter Deklaration gefolgt von Set objFolder = GetNamespace("MAPI").GetDefaultFolder(olFolderContacts)
könnte man z. B. die EntryID für alle Kontakte auslesen
Code: Alles auswählen
For Each objKontakt In objFolder.Items
        Debug.Print objKontakt.EntryID
    Next objKontakt

Ansprechen dann nachher mit
Code: Alles auswählen
Set objKontakt = objFolder.Session.GetItemFromID("EINESUPERLANGEALPHANUMMERISCHEID")


Markus, Dankeschön für den wertvollen Hinweis :!:
Gruß Tom
TomWest
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 237
Registriert: 18. Jan 2014, 12:14

Re: Suchreihenfolge der Kontakte per VBA

Beitragvon mmarkus » 20. Nov 2018, 17:58

Grundsätzlich brauchst du keine Folder Referenz:
Code: Alles auswählen
Set objKontakt = OutlookApplication.Session.GetItemFromID("EINESUPERLANGEALPHANUMMERISCHEID")
ms access what else
mmarkus
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1646
Registriert: 16. Apr 2012, 16:07
Wohnort: Oberösterreich

Re: Suchreihenfolge der Kontakte per VBA

Beitragvon TomWest » 20. Nov 2018, 20:22

Oh ok, noch besser :-)
Danke!
Gruß Tom
TomWest
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 237
Registriert: 18. Jan 2014, 12:14


Zurück zu Outlook Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast