AW: Outlook Kontaktordner
28.07.2015 16:54:52
Benny
Hallo Ede,
vielen Dank für deine Antwort. Jetzt habe ich deinen Hinweis in soweit angepasst, dass ich auch Unterordner erstellen kann. Außerdem kann ich jetzt auch Ornder löschen.
Zum Erstellen der Ordner habe ich noch eine Frage: Gibt es eine saubere Lösung einer Abfrage, ob ein Ordner bereits existiert? Auf Dateiebene ist mir das mit dir(...) = "" etc klar.
Für den Outlookkontakteordner habe ich das nun wie folgt realisiert:
Sub outlookKontakteErstellen()
If debugging Then
Call variablenVorbereiten
End If
' Neuen Outlook-Kontakt hinzufügen
Dim oOutlook As Outlook.Application
Dim oNameSpace As Outlook.Namespace
Dim oMAPIFolder, ordner As Outlook.MAPIFolder
Dim oContact As Outlook.ContactItem
Dim objMail As MailItem
Dim mitgliederSchüler, mitgliederEltern, mitglieder As Recipients
Dim objRcpnt As Recipient
Dim verteilerliste As Outlook.DistListItem
' 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) '.Folders("Schule") '.Folders( _
"Schule")
'Ordner erstellen bzw. auswählen
If sek2 Or diff Then
oName = "Kurs " & kursbezeichnung
Else
oName = "Klasse " & kursbezeichnung
End If
On Error Resume Next
'Ordner Schule zuweisen
Set ordner = oMAPIFolder.Folders("Schule")
'Falls der Ordner nicht existiert, Ordner erstellen
If ordner Is Nothing Then
Set ordner = oMAPIFolder.Folders.Add("Schule", olFolderContacts)
'Erstelle einen Unterordner Klasse 7a
Set ordner = oMAPIFolder.Folders("Schule").Folders.Add(oName, olFolderContacts)
Else
Set ordner = ordner.Folders(oName)
If ordner Is Nothing Then
Set ordner = oMAPIFolder.Folders("Schule").Folders.Add(oName, olFolderContacts)
End If
End If
On Error GoTo ErrHandler
Set ordner = oMAPIFolder '' so klappt das Anlegen der Liste
'Verteilerliste vorbereiten
Set objMail = oOutlook.CreateItem(Outlook.OlItemType.olMailItem)
Set mitgliederSchüler = objMail.Recipients
Set verteilerliste = ordner.Items.Add(Outlook.OlItemType.olDistributionListItem)
verteilerliste.DLName = "Schüler " & kursbezeichnung
'Kontakte Schüler erstellen
Sheets("Gesamt").Activate
Dim cell As Range
Dim pos As String
On Error GoTo ErrHandler
For Each cell In Range("AM2:AM31")
If cell.Value "" Then
If cell.offset(0, -31).Value = "w" Then
pos = "Schülerin " & kursbezeichnung
Else
pos = "Schüler " & kursbezeichnung
End If
' Objekt für neuen Eintrag erstellen
Set oContact = ordner.Items.Add
With oContact
' Eigenschaften des Eintrag festlegen
.LastName = cell.Value
.FirstName = cell.offset(0, 1).Value
.Email1Address = cell.offset(0, 3).Value
'.Birthday = cell.offset(0, -30).Value
.JobTitle = pos
.HomeAddressStreet = cell.offset(0, 5).Value
.HomeAddressPostalCode = cell.offset(0, 7).Value
.HomeAddressCity = cell.offset(0, 8).Value
.MobileTelephoneNumber = cell.offset(0, 11).Value
.HomeTelephoneNumber = cell.offset(0, 4).Value
' 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
'zur Verteilerliste hinzufügen
Set objRcpnt = mitgliederSchüler.Add(oContact)
End If
Next
'Verteilerliste anlegen
verteilerliste.AddMembers mitgliederSchüler
verteilerliste.Display
verteilerliste.Save
End Sub
Gibt es da eine bessere Lösung?
Außerdem klappt jetzt leider das Anlegen der Verteilerliste nicht mehr. Die Liste wird zwar erstellt, ist aber leer.
Wenn ich den Ordner so lasse (also Schule->Klasse 7a) dann werden dort die Konatkte erstellt und auch eine leere Verteilerliste wird erstellt. Wenn ich den Standardordner wähle (s. auskommentierte Zeile Set ordner = oMAPIFolder), dann funktioniert alles, allerdings im Standardordner.
Vielen Dank für deine Hilfe
Benny
Vielen Dank
Benny