Outlook Kontakt bearbeiten/aktualisieren (excel)

Moderator: ModerationP

Outlook Kontakt bearbeiten/aktualisieren (excel)

Beitragvon tommii » 14. Jun 2018, 18:39

Hi an alle,

ich hätte da mal ein paar fragen bezüglich Outlookkontakten. Über folgenden Code lasse ich mir Kontakte aus einer Exceldatei anlegen (lasse eine Schleife über die Zeilen in der Exceldatei laufen, in der die benötigten Daten stehen).

Code: Alles auswählen
Public Function olAddContact(ByVal sLastName As String, _
  Optional ByVal sFirstName As String, _
  Optional ByVal sCompanyName As String, _
  Optional sPhoneNumber As String, _
  Optional ByVal sEMail As String, _
  Optional ByVal sWebPage As String) As Boolean
 
  ' Neuen Outlook-Kontakt hinzufügen
  Dim oOutlook As Object    ' Outlook.Application
  Dim oNameSpace As Object  ' Outlook.NameSpace
  Dim oMAPIFolder As Object ' Outlook.MAPIFolder
  Dim oMyFolder As Object   ' Outlook.Zielordner
  Dim oContact As Object    ' Outlook.ContactItem
 
  Const olFolderContacts = 10
 
  ' Fehlerbehandlung aktivieren
  On Error GoTo ErrHandler
 
  ' Outlook-Application-Objekt erstellen
  Set oOutlook = CreateObject("Outlook.Application")
 
  ' Namespace initialisieren
  Set oNameSpace = oOutlook.GetNamespace("MAPI")
 
 
  ' Kontakt-Ordner verwenden
  Set oMAPIFolder = oNameSpace.GetDefaultFolder(olFolderContacts)
  Set oMyFolder = oMAPIFolder.Folders("test")   'Ziel Subfolder
           

 
  ' Objekt für neuen Eintrag erstellen
 ' Set oContact = oMAPIFolder.Items.Add
 Set oContact = oMyFolder.Items.Add
 
  With oContact
    ' Eigenschaften des Eintrag festlegen
    .LastName = Trim$(sLastName)
    .FirstName = Trim$(sFirstName)
    .CompanyName = Trim$(sCompanyName)
    .PrimaryTelephoneNumber = Trim$(sPhoneNumber)
    .Email1Address = Trim$(sEMail)
    .WebPage = Trim$(sWebPage)
 
    ' hier können natürlich noch weitere Eigenschaften
    ' für den neuen Kontakt festgelegt werden, wie z.B.
    ' HomeAddressStreet, HomeAddressCity, etc.
    ' (siehe hierzu VB-Objekt-Katalog - Outlook - ContactItem)
    ' ...
 
    ' Kontakt speichern
    .Save
  End With
  olAddContact = True
  oContact.Update

 
ErrHandler:
  If Err.Number <> 0 Then
    MsgBox "Fehler beim Erstellen des Outlook-Kontakts." & vbCrLf & _
      CStr(Err.Number) & " " & Err.Description, vbExclamation + vbOKOnly
 
    olAddContact = False
  End If
 
  ' Objekte wieder freigeben
  Set oContact = Nothing
  Set oMAPIFolder = Nothing
  Set oNameSpace = Nothing
  Set oOutlook = Nothing
End Function
Sub hinzufügen()
Dim Vorname As String
Dim Nachname As String
Dim mail As String

Dim strVorname As String
Dim strNachname As String
Dim intLeerPos As Integer
Dim zahl As Integer

 

For Each zelle In Range(Cells(2, "B"), Cells(Rows.Count, "B").End(xlUp))
intLeerPos = InStr(zelle, ",")
strNachname = Left(zelle, intLeerPos - 1)
zahl = InStrRev(zelle, ",")
strVorname = Right(zelle, zahl)


If olAddContact(strVorname, strNachname, "", "", zelle.Offset(0, 2), "") Then
  End If
  Next
  End Sub


Da wir auf einem Exchange Server laufen, wird so ersteinmal nur der "Vorname", "Nachname" und die "E-Mailadresse" gesetzt. Meine Frage ist nun, ob man die Aktion, die sich hinter dem Menüpunkt "Aktualisieren" verbirgt, auch über vba starten kann!? Diese Funktion holt ja alle restlichen Daten vom Exchangeserver ab.

Bild
Im Objectkatalog zum Thema Outlook-->Contactitem habe ich diesbezüglich nichts gefunden.


Danke im Voraus für eure Hilfe

Lieben gruß tommii
tommii
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 124
Registriert: 21. Mär 2012, 08:26

Re: Outlook Kontakt bearbeiten/aktualisieren (excel)

Beitragvon mmarkus » 15. Jun 2018, 09:47

tommii hat geschrieben:Da wir auf einem Exchange Server laufen, wird so ersteinmal nur der "Vorname", "Nachname" und die "E-Mailadresse" gesetzt. Meine Frage ist nun, ob man die Aktion, die sich hinter dem Menüpunkt "Aktualisieren" verbirgt, auch über vba starten kann!? Diese Funktion holt ja alle restlichen Daten vom Exchangeserver ab.


Exchange zeichnet sich dadurch aus, dass automatisch aktualisiert wird, sobald etwas geändert wird.
Zusätzliches synchronisieren wird also nichts bringen.

Zum Code würde ich dir übrigens empfehlen:
Immer Option Explicit verwenden.
Entwickle mit Early Binding. So meldet der Compiler die schlimmsten Fehler sofort. (Im Code verwendest du z.B. oContact.Update - der Befehl existiert nicht, wie kommst du auf den?)
Für den Test kannst du dann ja auf Late Binding umstellen.
Du musst aber unbedingt den Verweis entfernen um zu sehen, ob du alle Konstaten deklariert hast.

Auch wenn man Code kopiert sollte man versuchen ihn zu verstehen!
LG Markus
ms access what else
mmarkus
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 827
Registriert: 16. Apr 2012, 16:07
Wohnort: Vienna

Re: Outlook Kontakt bearbeiten/aktualisieren (excel)

Beitragvon tommii » 17. Jun 2018, 10:54

Hi Markus,

der Updatebefehl war ein Versuch,habe vergessen ihn zu entfernen. ;-)

Und den Code verstehe ich, so ist das nicht. Ich bin leider auf eine latebinding Variante angewiesen, da unsere rechner nicht alle die selbe Office version nutzen und somit ein Verweis auf die Outlook library nicht hinhauen würde.

Meine Hoffnung ist halt, dass ich den User bzw den Kontakt aus der excel datei anlegen kann und automatisiert das updaten (bzw. Auffüllen) der exchange daten durchführen kann (einfach der Vollständigkeit halber)


Im Grunde genommen kann ich auch einfach nur Name und email in den Kontakt eintragen...ist halt schade, dass die Daten dann nicht vollständig wären zumal der exchange mir irgendwie auch den "angezeigt als" der ersten hinterlegten emailadresse zerschießt...egal was ich da im Makro eintrage, es kommt immer

"Nachname, Vorname <emailadresse>"

Also meindt du das aktualisieren kann man nicht via vba anstoßen? Oder kann man in Outlook das synchronisieren einstellen? Sprich dass er bei jedem anmelden die aktuellen Daten vom Server holt?

Danke schonmal für die Hilfe

Mfg tommii
tommii
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 124
Registriert: 21. Mär 2012, 08:26

Re: Outlook Kontakt bearbeiten/aktualisieren (excel)

Beitragvon mmarkus » 17. Jun 2018, 14:11

tommii hat geschrieben:Also meindt du das aktualisieren kann man nicht via vba anstoßen? Oder kann man in Outlook das synchronisieren einstellen? Sprich dass er bei jedem anmelden die aktuellen Daten vom Server holt?


Ich kenne das nur so:
So bald sich Outlook mit dem Exchange Server verbindet, wird automatisch synchronisiert.
Danach wird jede vorgenommene Änderung sofort synchronisiert.
Wenn ich einen Termin in Outlook anlege, so sehe ich den Termin binnen einer Sekunden auch am Tablet/Mobiltelefon (bei Push Aktualisierung). - Ohne irgendwo zusätzlich eine Synchronisation zu starten.
Das ist ja ein Hauptgrund für Exchange.
ms access what else
mmarkus
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 827
Registriert: 16. Apr 2012, 16:07
Wohnort: Vienna


Zurück zu Outlook Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste