Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1156to1160
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
Inhaltsverzeichnis

Excel - Outlook

Excel - Outlook
Melek
Hallo,
hatte dieses Anliegen schonmal hier dargestellt. Vielleicht kann mir ja jetzt jemad weiterhelfen. Wäre sehr dankbar.
Habe hier ein Makro, welches ich noch etwas verändern möchte:
1. Ich möchte nicht nach einem Datum, sondern nach einem Betreff gefragt werden und
2. ich möchte gerne nicht die letzte, sondern die oberste Zeile aus dem Textfeld eines Termins (Kalender) auslesen.
Was (und wo) muss ich hierfür im Code etwas verändern?
Sub OutlookTerminEinlesen()
Dim outl, Datum As Long, lstrText As String, lbZaehler As Byte, liDurchlauf As Integer
Dim ns, terminOrdner, termine, termin As AppointmentItem
Set outl = CreateObject("Outlook.Application")
Set ns = outl.GetNamespace("MAPI")
Set terminOrdner = ns.GetDefaultFolder(9) 'olFolderCalendar
'Filtere Termine dieses Tages
Datum = Range("A1")
If Datum = 0 Then MsgBox "In A1 muss ein Datum stehen": Exit Sub
Set termine = terminOrdner.Items.Restrict("[Start] >= '" & Format(Datum, "mm""/""dd""/"" _
yyyy
hh:nn")
& "' and [Start]  "" Then Range(Range("A6"), Range("A6").End(xlDown)).EntireRow.Delete
For Each termin In termine
ActiveCell = termin.Subject
ActiveCell.Offset(0, 1) = termin.Start
ActiveCell.Offset(0, 2) = termin.End
lstrText = termin.Body
If Right(lstrText, 1) = Chr(10) Then
For liDurchlauf = Len(lstrText) To 1 Step -1
If Asc(Mid(lstrText, liDurchlauf, 1)) = 10 Then
lbZaehler = lbZaehler + 1
End If
If lbZaehler = 2 Then
lstrText = Right(lstrText, Len(lstrText) - liDurchlauf)
lstrText = Left(lstrText, Len(lstrText) - 2)
ActiveCell.Offset(0, 3) = lstrText
lbZaehler = 0
Exit For
End If
Next
Else
For liDurchlauf = Len(lstrText) To 1 Step -1
If Asc(Mid(lstrText, liDurchlauf, 1)) = 10 Then
ActiveCell.Offset(0, 3) = Right(lstrText, Len(lstrText) - liDurchlauf)
Exit For
End If
Next
End If
ActiveCell.Offset(1, 0).Activate
Next termin
End Sub

Vielen Dank schonmal
LG Melek

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Excel - Outlook
19.05.2010 14:01:44
Oberschlumpf
Hi Melek
Die "Mutter" eines Termins ist aber nun mal das Datum.
Nach deinem Wunsch, müsstest du alle in Outlook eingetragenen Termine abfragen - und damit meine ich wirklich alle.
Hab gerad mal in mein OL geguckt. Ich hab Kalendereinträge aus 2007 - die kann ich aber nicht löschen, da es Serientermine sind; oder ich müsste sie jedes Jahr neu anpassen.
Warum hast du denn mit der Datumsabfrage so ein Problem?
Wäre es nicht möglich, dass du dir Termine aus nur einem bestimmten Zeitraum (von Startdatum bis Endedatum) anzeigen lässt?
Ciao
Thorsten
AW: Excel - Outlook
20.05.2010 08:09:52
fcs
Hallo Melek,
hier eine angepasste aber Mangels Outlook nicht getestete Prozedur.
Den Datumsbereich der durchsuchten Kalendereinträge kannst du ja ggf. anpassen
Gruß
Franz
Sub OutlookTerminEinlesen()
Dim outl, Datum As Long, lstrText As String
Dim ns, terminOrdner, termine, termin As AppointmentItem
Dim sBetreff As String
sBetreff = InputBox(Prompt:="Bitte Suchtext für Termin-Betreff eingeben", _
Title:="Betreffsuche im Outlook-Kalender")
If sBetreff = "" Then Exit Sub
Set outl = CreateObject("Outlook.Application")
Set ns = outl.GetNamespace("MAPI")
Set terminOrdner = ns.GetDefaultFolder(9) 'olFolderCalendar
'Filtere Termine dieses Datumbereichs (1 Jahr zurück bis 1 Monat in Zukunft)
Datum = Date
'365 und 31 in folgender Anweisung ggf. anpassen
Set termine = terminOrdner.Items.Restrict("[Start] >= '" _
& Format(Datum - 365, "mm""/""dd""/""yyyy hh:nn") _
& "' and [Start]  "" Then Range(Range("A6"), Range("A6").End(xlDown)).EntireRow.Delete
For Each termin In termine
'Prüfen, ob im Betreff der Suchbegriff enthalten ist
If LCase(termin.Subject) Like LCase(sBetreff) Then
ActiveCell = termin.Subject
ActiveCell.Offset(0, 1) = termin.Start
ActiveCell.Offset(0, 2) = termin.End
lstrText = termin.Body
'1. Zeile des Bodytextes übernehmen
If InStr(1, lstrText, Chr(10)) > 0 Then
lstrText = Left(lstrText, InStr(1, lstrText, Chr(10)) - 2) '2 ggf. anpassen
ActiveCell.Offset(0, 3) = lstrText
Else
ActiveCell.Offset(0, 3) = lstrText
End If
ActiveCell.Offset(1, 0).Activate
End If
Next termin
End Sub

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige