PDA

Vollständige Version anzeigen : "Speichern und schließen"-Ereignis beim Hinzufügen von Kontakten


Thomas Chemnitz
16.01.2002, 13:58
Hallo,

Gibt es eine Möglichkeit, an oben genanntes Ereignis mit VBA ranzukommen? Oder gibt es irgend ein anderes Ereignis, welches ausgelöst wird, wenn man einen neuen Kontakt anlegt?
Danke im Voraus

MfG
Thomas

Thomas Chemnitz
23.01.2002, 13:39
Hallo!

Hat das "PropertyChange" Ereignis in Outlook etwas damit zu tun bzw. kommt man darüber an das gewünschte Ereignis heran?

Danke im Voraus
MfG Thomas

Alexander Jan Peters
23.01.2002, 13:49
<font face="Tahoma">Hallo Thomas,

ich glaube nicht, es wird wohl eher das Ereignis Write des Kontakt-Items sein:

Sub object_Write(Cancel as Boolean)

Wofür benötigst Du das denn?

Gruß

A.J. Peters</font>

Thomas Chemnitz
23.01.2002, 13:53
Danke erstmal!

Ich habe folgendes Problem: Alle Kontakte wurden vorher per Access-Datenbank verwaltet. Da gabs für jede Firma eine FirmenID. Das Ganze soll nun auf Outlook umgestellt werden. Wird ein neuer Kontakt mit neuer Firma erstellt, soll dem automatisch eine eindeutige FirmenID zugeordnet werden.

MfG
Thomas

Alexander Jan Peters
23.01.2002, 15:47
<font face="Tahoma">Also, ich bin beim besten Willen kein Outlook-Fachmann, aber ich glaub die leichteste Lösung ist es:

1) ein zusätzliches Feld im Kontaktformular anzulegen
2) ein Script für das Ereignis Write (es ist das richtige Ereignis) zu erstellen (Entwurfsmodus - Skript)
3) hier wird geprüft, ob ein Eintrag für diesen Kontakt existiert (for each item in collection)
und es wird eine eindeutige ID erzeugt
4) dieses Feld mit der eindeutigen ID zu füllen

Eine eindeutige ID kannst Du z.B. mit der Umwandlung des Datums und der Zeit in eine Zahlenfolge erreichen (siehe <a href="http://www.ms-office-forum.net/forum/showthread.php?s=&threadid=65663">Beitrag</a>)
Ansonsten, Maximalwert bei Prüfung ermitteln, dann +1.

Gruß

A.J. Peters

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurden in diesem Beitrag Links korrigiert, die auf falsche Adressen zeigten...
jinx - 15.06.2003</font>

Thomas Chemnitz
23.01.2002, 15:54
Danke!

Ich habs jetzt so gelöst (in VBScript):
*********************************
If User4 = "" Then
Set Ordner = Application.GetNameSpace("MAPI").Folders("Öffentliche Ordner").Folders ("Alle Öffentlichen Ordner").Folders ("Kontakte_old")
for i = 1 to Ordner.Items.Count
if Ordner.Items(i).User4 > Max then Max = Ordner.Items(i).User4
next
MsgBox Max
end if
*********************************
Die Formulierung "eindeutig" war etwas unvollständig. Die ID soll ähnlich dem AutoWert Feld in Access sein. Nun das nächste Problem: Obige Methode nimmt bei 4000 Einträgen enorm (und eindeutig zu) viel Zeit in Anspruch. Gibt es in VBScript eine Methode, den Maximalwert von einer Reihe von Einträgen zu ermitteln (ähnlich wie in VBA) bzw. kommt man per VBScript irgendwie an eine VBA-Prozedur ran?

MfG
Thomas

Alexander Jan Peters
23.01.2002, 16:13
<font face="Tahoma">Hallo Thomas,

ich denke ja, leg einfach ein Modul mit den benötigten Prozeduren an, das müßte gehen (der Zugriff auf Objekte und Methoden der aktiven Outlook-Session ging ja auch).
Eventuell könntest Du die Ermittlung des Maximalwerts auch in die Startup-Prozedur auslagern und in einer Variablen (oder externen Datei w/Mehrbenutzer) unterbringen.

Gruß

Alex

P.S. Ich zerschieß mir noch Outlook, wenn ich hier weiter so etwas ausprobiere, ich hab von VBS keinen Schimmer</font>