Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Outlook-Kalender auslesen (https://www.delphipraxis.net/190615-outlook-kalender-auslesen.html)

MrChey 20. Okt 2016 10:51

Outlook-Kalender auslesen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich weiß, dass diese Frage schon sehr oft gestellt wurde. Ich habe nachfolgenden Code gefunden und getestet. Soweit funktioniert er auch.
Doch leider kann ich nur den 'Kalender' auslesen, aber nicht die 'Unter-Kalender' [Raum1, Raum2, Raum3].
Es hat mit Sicherheit etwas mit
Code:
CalendarFolder := Topfolder.Folders('Kalender');
zu tun. Ich habe wirklich alles getan, um
eine Lösung zu finden. Kann mir hier jemand helfen? Wäre echt toll.


Delphi-Quellcode:
procedure TForm1.btn1Click(Sender: TObject);
const
  olFolderCalendar = $00000009;
var
  outlook, NameSpace,calendarfolder, Termine, Termin, topfolder: OleVariant;
  i: Integer;
  Datum, ZeitVon, ZeitBis, Firma, Raum, Kategorie, erledigt_jn : string;
  f : TextFile;

begin


  outlook := CreateOleObject('Outlook.Application');
  NameSpace := outlook.GetNameSpace('MAPI');
  TopFolder := NameSpace.Folders[1];
  CalendarFolder := Topfolder.Folders('Kalender');
  Termine := NameSpace.GetDefaultFolder(olFolderCalendar);

  for i := 1 to Termine.Items.Count do
  begin
    Termin := Termine.Items.Item(i);
    Datum := Copy(DateTimeToStr(Termin.Start),1,10);
    ZeitVon := Copy(DateTimeToStr(Termin.Start),12,8);
    ZeitBis := Copy(DateTimeToStr(Termin.End), 12,8);
    Firma := Termin.Subject;
    Raum := Termin.Location;
    Kategorie := Termin.Categories;
    erledigt_jn := 'N';


      if StrToDate(Datum) <> Now then   // Wenn das eingelesene Datum größer ist, als das Aktuelle dann...
        begin                          // schreibe den Termin
          memo1.lines.add( Raum +','+ Kategorie +','+ Firma +','+ Datum +','+ ZeitVon +','+ ZeitBis +','+ erledigt_jn);
     end;

  end;

  Outlook := UnAssigned;
end;

Jumpy 20. Okt 2016 13:19

AW: Outlook-Kalender auslesen
 
Hab mal was aus einer Excel-VBA-Anwendung kopiert, daher die nicht Delphi-Syntax. Das Prinzip des Zugriffs sollte aber das selbe sein:

Code:
Set Kalender = objApp.GetNamespace("MAPI") _
               .Folders.Item("Öffentliche Ordner") _
               .Folders.Item("Alle Öffentlichen Ordner") _
               .Folders.Item("Kalender") _
               .Folders.Item("Raum1")

MrChey 20. Okt 2016 13:51

AW: Outlook-Kalender auslesen
 
Zitat:

Zitat von Jumpy (Beitrag 1351499)
Hab mal was aus einer Excel-VBA-Anwendung kopiert, daher die nicht Delphi-Syntax. Das Prinzip des Zugriffs sollte aber das selbe sein:

Code:
Set Kalender = objApp.GetNamespace("MAPI") _
               .Folders.Item("Öffentliche Ordner") _
               .Folders.Item("Alle Öffentlichen Ordner") _
               .Folders.Item("Kalender") _
               .Folders.Item("Raum1")

Hallo Jumpy,

vielen lieben Dank, habe es versucht zu implentieren. Leider ohne Erfolg. :(
Ich bekomme immer nur die Fehlermeldung Der versuchte Vorgang konnte nicht ausgeführt werden. Ein Objekt wurde nicht gefunden.
Aber welches Objekt, sagt mir diese Meldung nicht.

Jumpy 20. Okt 2016 15:02

AW: Outlook-Kalender auslesen
 
Wie hast du es denn gemacht? Welche Bezeichnungen? Und an welcher Stelle kommt die Fehlermeldung?

MrChey 21. Okt 2016 13:25

AW: Outlook-Kalender auslesen
 
Zitat:

Zitat von Jumpy (Beitrag 1351514)
Wie hast du es denn gemacht? Welche Bezeichnungen? Und an welcher Stelle kommt die Fehlermeldung?

Delphi-Quellcode:
procedure TfrmEinstellungen.AutoImport();
const olFolderCalendar = 9;
      olPublicFoldersAllPublicFolders = 12;
var
  outlook, NameSpace,calendarfolder, Termine, Termin,topfolder: OleVariant;
  i: Integer;
  Created : Boolean;
  f : TextFile;

begin
  outlook := CreateOleObject('Outlook.Application');
  Created := True;
  NameSpace := outlook.GetNameSpace('MAPI');
  TopFolder := NameSpace.GetDefaultFolder(olFolderCalendar);
  Termine := TopFolder.Folders(kal);


// Titel des Termins und Startdatum mit Zeit auslesen:
for i := 1 to Termine.Items.Count do
  begin
    Termin := Termine.Items.Item(i);

//...
Yeehaaah. So läuft es wunderbar. :thumb: :cheers:


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz