Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1740to1744
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

Outlook Termine auslesen und übertragen

Outlook Termine auslesen und übertragen
27.02.2020 14:52:23
Martin
Ich möchte aus freigegeben Outlook Kalendern Termine extrahieren und auflisten.
Aus Internetrescherchen habe ich folgende Code zusammengebastelt:

Sub FindTermine()
Dim olApp As Object: Set olApp = CreateObject("Outlook.Application")
Dim olNS As Outlook.NameSpace: Set olNS = olApp.GetNamespace("MAPI")
Dim olApt As Object
Dim NextRow As Long
Dim FromDate As Date
Dim ToDate As Date
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Import")
Dim myAppointments As Outlook.Items
Dim objOwner As Object: Set objOwner = olNS.CreateRecipient(AvailableCals.Value)
FromDate = CDate(MonBox.Value)
ToDate = CDate(EndDate.Caption)
On Error Resume Next
If Err.Number > 0 Then Set olApp = CreateObject("Outlook.Application")
objOwner.Resolve
If objOwner.Resolved Then
Set myAppointments = olNS.GetSharedDefaultFolder(objOwner, olFolderCalendar).Items
End If
myAppointments.Sort "[Start]"
myAppointments.IncludeRecurrences = True
Set olApt = myAppointments.Find("[Start] >= """ & _
FromDate & """ and [Start]  "Nothing"
MsgBox objOwner & " - " & olApt.Subject & " - " & CDate(olApt.Start) & " - " & CDate(olApt.End) _
_
& " - " & Format(olApt.End - olApt.Start, "0.00") & " - " & olApt.Location
Set olApt = myAppointments.FindNext
Wend
End Sub
(Die "objOwner" und die "FromDate" und "ToDate" werden über ein Formular gespeist)
Dies funktioniert auch super. Allerdings, möchte ich die Daten in eine tabelle auflisten und nicht in ein MsgBox.
Hierzu habe ich die untere Teil wie folgt ersetzt:


While TypeName(olApt)  "Nothing"
NextRow = 2
With Sheets("Import")
.Range("A2:F199").Value = ""
.Range("A1:F1").Value = Array("Besitzer", "Termin", "Beginn", "Ende", "Dauer", "Ort")
For Each olApt In myAppointments.Items
If (olApt.Start >= FromDate And olApt.Start .Cells(NextRow, "A").Value = objOwner
.Cells(NextRow, "B").Value = olApt.Subject
.Cells(NextRow, "C").Value = CDate(olApt.Start)
.Cells(NextRow, "D").Value = CDate(olApt.End)
.Cells(NextRow, "D").NumberFormat = "HH:MM"
.Cells(NextRow, "E").Value = olApt.End - olApt.Start
.Cells(NextRow, "E").NumberFormat = "HH:MM"
.Cells(NextRow, "F").Value = olApt.Location
NextRow = NextRow + 1
Else
End If
Next olApt
On Error GoTo 0
.Columns.AutoFit
End With
Set olApt = Nothing
Set myAppointments = Nothing
Set olNS = Nothing
Set olApp = Nothing
Wend
cleanExit:
Application.ScreenUpdating = True
Exit Sub
ErrHand:
'Add error handler
Resume cleanExit
End Sub


Dies jedoch liefert nur den ersten Termin und sonst keine.
Was mache ich falsch? Kann mir jemand in die richtige Richtung schicken

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Outlook Termine auslesen und übertragen
27.02.2020 15:01:54
SF
Hola,
verlinkst du bitte deine Fragen in den verschiedenen Foren gegenseitig?
Danke.
Gruß,
steve1da
AW: Outlook Termine auslesen und übertragen
27.02.2020 15:06:17
Martin
Sorry Steve,
ich bin neu dabei, was bedeutet das?
Gruß
Martin
AW: Outlook Termine auslesen und übertragen
27.02.2020 15:08:30
SF
Du setzt hier einen Link zur Frage im anderen Forum, und umgekehrt.
Gruß,
steve1da
AW: Outlook Termine auslesen und übertragen
27.02.2020 15:41:16
volti
Hallo Martin,
ohne das jetzt in irgendeiner Weiese geprüft zu haben, würde ich das eher in dieser Form machen....
Sub TestMe()
 'code.....
 '###################################################
 With Sheets("Import")
  .Range("A2:F199").ClearContents
  .Range("A1:F1").value = Array("Besitzer", "Termin", "Beginn", "Ende", "Dauer", "Ort")
  NextRow = 2
  While TypeName(olApt) <> "Nothing"
     If (olApt.Start >= FromDate And olApt.Start <= ToDate) Then
       .Cells(NextRow, "A").value = objOwner
       .Cells(NextRow, "B").value = olApt.Subject
       .Cells(NextRow, "C").value = CDate(olApt.Start)
       .Cells(NextRow, "D").value = CDate(olApt.End)
       .Cells(NextRow, "D").NumberFormat = "HH:MM"
       .Cells(NextRow, "E").value = olApt.End - olApt.Start
       .Cells(NextRow, "E").NumberFormat = "HH:MM"
       .Cells(NextRow, "F").value = olApt.Location
        NextRow = NextRow + 1
     End If
     Set olApt = myAppointments.FindNext
  Wend
 End With
 'code.....
End Sub
viele Grüße
Karl-Heinz

Anzeige
AW: Outlook Termine auslesen und übertragen
27.02.2020 18:05:04
Martin
Hallo Karl-Heinz,
vielen, vielen Dank. Ich habe schon einige Zeit damit verbracht es hinzubekommen und habe verzweifelt "aufgegeben".
Ich war mir sicher, dass ich nah dran war und am Ende war es wirklich nur wenig, aber ohne deine Hilfe hätte ich es nicht hinbekommen.
Und das alles nach wenigen Minuten. Einfach toll
Bsten Grüße
Martin
AW: Outlook Termine auslesen und übertragen
27.02.2020 19:29:59
SF
Auch toll dass du verlinkt hast und noch toller dass du im anderen Forum Bescheid gesagt hast......toll
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige