Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
680to684
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
680to684
680to684
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Kontakte in Outlook updaten (Frage an Ramses)

Kontakte in Outlook updaten (Frage an Ramses)
12.10.2005 09:37:33
Matthias_FFM
Hallo Ramses,
Deine folgende Programmierung zum Exportieren der Kontakte nach Outlook funktioniert super:

Sub Send_Contact_List()
Dim qWks As Worksheet, i As Integer
Dim MyOutApp As Object, MyOutCon As Object
'Wo stehen die Kontaktdaten
Set qWks = Worksheets("Tabelle2")
'Outlook Objekt erstellen
Set MyOutApp = CreateObject("Outlook.Application")
'Mit "With" wird auf das Tabellenobjekt referenziert
With qWks
'Zählschleife starten
'Dazu wird der letzten Eintrag in Spalte A bestimmt
'Der Adressenbereich beginn in Zeile 2
'deshalb startet auch die Zählschleife dort
For i = 2 To Range("A65536").End(xlUp).Row
'Outlook Kontaktobject erstellen
Set MyOutCon = MyOutApp.CreateItem(2)
'Eine vollständige Liste der möglichen Felder
'finden Sie in der Outlook-VBA-Hilfe
With MyOutCon
.LastName = Cells(i, 1).Value
.FirstName = Cells(i, 1).Offset(0, 1).Value
.BusinessAddressStreet = Cells(i, 1).Offset(0, 2).Value
.BusinessAddressPostalCode = Cells(i, 1).Offset(0, 3).Value
.BusinessAddressCity = Cells(i, 1).Offset(0, 4).Value
.BusinessAddressCountry = Cells(i, 1).Offset(0, 5).Value
.BusinessAddressState = Cells(i, 1).Offset(0, 6).Value
.Email1Address = Cells(i, 1).Offset(0, 7).Value
.Save
End With
'Object entfernen
Set MyOutCon = Nothing
Next i
End With
Set MyOutApp = Nothing
End Sub

Meine Frage: Bestehende Kontakte sollen nicht ein zweites Mal in Outlook angelegt werden (wenn vorhanden, Abgleich z. B. voller Name), sondern upgedated werden.
Kann dieser Abgleich in Outlook stattfinden oder sollten besser die Kontakte nach Excel exportieren und dort vergleichen werden?
Was wäre Dein Vorschlag?
Vielen Dank für Deine Antwort.....
Matthias

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Frage offen (an alle Excel-Experten), Danke o.T.
13.10.2005 09:11:47
Matthias_FFM
AW: Kontakte in Outlook updaten (Frage an Ramses)
14.10.2005 10:17:49
bst
Hi Matthias,
versuch's mal so.
anstatt:
Set MyOutCon = MyOutApp.CreateItem(2)
nimm:
Set MyOutCon = GetKontakt(MyOutApp, Cells(i, 1).Value, Cells(i, 2).Value)
sowie unten stehende Funktion.
HTH, Bernd
--
Option Explicit

Function GetKontakt(OlApp As Object, LastName As String, FirstName As String) As Object
   Dim f As Object, item As Object
   
   Set f = OlApp.GetNamespace("MAPI").GetDefaultFolder(10)
   For Each item In f.items
      If UCase(item.LastName) = UCase(LastName) And UCase(item.FirstName) = UCase(FirstName) Then
         Set GetKontakt = item
         Exit Function
      End If
   Next
   Set GetKontakt = OlApp.createitem(2)
End Function

Anzeige
AW: Kontakte in Outlook updaten
14.10.2005 12:31:26
Matthias_FFM
Hallo Bernd,
vielen Dank für Deinen Vorschlag. Leider bin ich nicht so fit, die Funktion einzubauen.
Ich möchte also die in Ramses (beispielhaft) benannten Felder aus Outlook auslesen, in Excel überarbeiten und dann alle Felder an Outlook exportieren. Über Abgleich Vorname/Name soll dann ein Kontakt neu eingerichtet oder (falls vorhanden) nur upgedated werden.
Es wäre toll, weil mein Kenntnistand reicht nicht aus, wenn Du nochmals helfen könntest.
Vielen Dank und sonnige Grüße aus FFM
Matthias
AW: Kontakte in Outlook updaten
14.10.2005 13:41:58
bst
Hallo Matthias,
hier alles zusammen, leicht verändert.
Habe noch die Eintragung der Namen verschoben, da diese falls der Kontakt bereits existiert ja nicht noch einmal gesetzt werden müssen.
HTH, Bernd
--
Option Explicit

Sub Send_Contact_List()
   Dim qWks As Worksheet, i As Integer
   Dim MyOutApp As Object, MyOutCon As Object
   
   'Wo stehen die Kontaktdaten
   Set qWks = Worksheets("Tabelle2")
   'Outlook Objekt erstellen
   Set MyOutApp = CreateObject("Outlook.Application")
   'Mit "With" wird auf das Tabellenobjekt referenziert
   With qWks
      'Zählschleife starten
      'Dazu wird der letzten Eintrag in Spalte A bestimmt
      'Der Adressenbereich beginn in Zeile 2
      'deshalb startet auch die Zählschleife dort
      For i = 2 To Range("A65536").End(xlUp).Row
         'Outlook Kontaktobject suchen bzw. neu erstellen
         Set MyOutCon = GetKontakt(MyOutApp, Cells(i, 1).Value, Cells(i, 2).Value)
         'Eine vollständige Liste der möglichen Felder
         'finden Sie in der Outlook-VBA-Hilfe
         With MyOutCon
            .BusinessAddressStreet = Cells(i, 3).Value
            .BusinessAddressPostalCode = Cells(i, 4).Value
            .BusinessAddressCity = Cells(i, 5).Value
            .BusinessAddressCountry = Cells(i, 6).Value
            .BusinessAddressState = Cells(i, 7).Value
            .Email1Address = Cells(i, 8).Value
            .Save
         End With
         'Object entfernen
         Set MyOutCon = Nothing
      Next i
   End With
   Set MyOutApp = Nothing
End Sub

Function GetKontakt(OlApp As Object, LastName As String, FirstName As String) As Object
   Dim f As Object, item As Object
   
   ' öffnet den Standard-Kontaktordner, 10 = olFolderContacts
   Set f = OlApp.GetNamespace("MAPI").GetDefaultFolder(10)
   ' durchsucht dort alle Kontakte
   For Each item In f.items
      ' Falls Vor- und Nachname übereinstimmen wird dieser Kontakt zurückgegeben
      If UCase(item.LastName) = UCase(LastName) And UCase(item.FirstName) = UCase(FirstName) Then
         Set GetKontakt = item
         Exit Function
      End If
   Next
   ' Kein passender Kontakt gefunden, einen neuen Kontakt erstellen
   Set GetKontakt = OlApp.createitem(2)
   ' Und dann noch die Namen eintragen
   GetKontakt.LastName = LastName
   GetKontakt.FirstName = FirstName
End Function

Anzeige
super klasse....
14.10.2005 14:44:23
Matthias_FFM
Hallo Bernd,
herzlichen Dank für Deine Unterstützung, hatte zuerst "Ladehemmnung".
Da mein Aktivierungsbutton des Makros in einem anderen Sheet liegt, musste ich nach der Zeile
Set qWks = Worksheets("Tabelle2")
das Sheet über
Sheets("Tabelle2").Select
aktivieren. (Für Profis sicherlich logisch, gell...)
Ein schönes Wochenende....
Matthias
AW: super klasse....
14.10.2005 15:01:27
bst
Oops,
nee, das ist eher ein Fehler im Code. Wenn man schon mit "with qWks" arbeitet, sollte man es auch benutzen. Ich hatte das einfach übernommen, ohne darüber nachzudenken :-(
Und, es tat halt auch, wenn 'zufällig' Tabelle2 aktiv war.
Hier eine korrigierte Version.
cu, Bernd
--
Option Explicit

Sub Send_Contact_List()
   Dim qWks As Worksheet, i As Integer
   Dim MyOutApp As Object, MyOutCon As Object
   
   'Wo stehen die Kontaktdaten
   Set qWks = Worksheets("Tabelle2")
   'Outlook Objekt erstellen
   Set MyOutApp = CreateObject("Outlook.Application")
   'Mit "With" wird auf das Tabellenobjekt referenziert
   With qWks
      'Zählschleife starten
      'Dazu wird der letzten Eintrag in Spalte A bestimmt
      'Der Adressenbereich beginn in Zeile 2
      'deshalb startet auch die Zählschleife dort
      For i = 2 To .Range("A65536").End(xlUp).Row
         'Outlook Kontaktobject suchen bzw. neu erstellen
         Set MyOutCon = GetKontakt(MyOutApp, .Cells(i, 1).Value, .Cells(i, 2).Value)
         'Eine vollständige Liste der möglichen Felder
         'finden Sie in der Outlook-VBA-Hilfe
         With MyOutCon
            .BusinessAddressStreet = qWks.Cells(i, 3).Value
            .BusinessAddressPostalCode = qWks.Cells(i, 4).Value
            .BusinessAddressCity = qWks.Cells(i, 5).Value
            .BusinessAddressCountry = qWks.Cells(i, 6).Value
            .BusinessAddressState = qWks.Cells(i, 7).Value
            .Email1Address = qWks.Cells(i, 8).Value
            .Save
         End With
         'Object entfernen
         Set MyOutCon = Nothing
      Next i
   End With
   Set MyOutApp = Nothing
End Sub

Function GetKontakt(OlApp As Object, LastName As String, FirstName As String) As Object
   Dim f As Object, item As Object
   
   ' öffnet den Standard-Kontaktordner, 10 = olFolderContacts
   Set f = OlApp.GetNamespace("MAPI").GetDefaultFolder(10)
   ' durchsucht dort alle Kontakte
   For Each item In f.items
      ' Falls Vor- und Nachname übereinstimmen wird dieser Kontakt zurückgegeben
      If UCase(item.LastName) = UCase(LastName) And UCase(item.FirstName) = UCase(FirstName) Then
         Set GetKontakt = item
         Exit Function
      End If
   Next
   ' Kein passender Kontakt gefunden, einen neuen Kontakt erstellen
   Set GetKontakt = OlApp.createitem(2)
   ' Und dann noch die Namen eintragen
   GetKontakt.LastName = LastName
   GetKontakt.FirstName = FirstName
End Function

Anzeige
alles klar, danke nochmals...(o.T.)
14.10.2005 15:13:45
Matthias_FFM

26 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige