![]() |
Outlook Kalender lesen und schreiben
Hallo,
wie kann ich Daten aus dem Outlook Kalender lesen und schreiben? Habe es so einmal probiert:
Delphi-Quellcode:
Code ist von hermidelphi.
unit send_to_outlook;
interface uses Windows, Messages, SysUtils, StrUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, ShellAPI, Grids, ComCtrls, ComObj, ShellCtrls, jpeg; type TCalendar = record Start: string; Ende: string; Categories: string; Subject: string; Body: string; // ### Further properties. See MSDN end; type TForm1 = class(TForm) LabelDatum: TLabel; Button1: TButton; Startzeit: TDateTimePicker; Endzeit: TDateTimePicker; LabelStart: TLabel; LabelEnde: TLabel; LabelBetreff: TLabel; LabelKategorie: TLabel; LabelBeschreibung: TLabel; Datum: TDateTimePicker; Betreff: TEdit; Kategorie: TEdit; Beschreibung: TMemo; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Datum.Date := Date; end; procedure OutlookAddCalendar(CalendarFolderPath : string; Calendar : TCalendar); const olFolderCalendars = $00000009; var Outlook : OleVariant; NameSpace : OleVariant; CalendarsRoot : OleVariant; CalendarsFolder : OleVariant; OutlookCalendar : OleVariant; SubFolderName : string; Position : integer; Found : boolean; Counter : integer; TestCalendarFolder : OleVariant; begin // Connect to outlook Outlook := CreateOleObject('Outlook.Application'); // Get name space NameSpace := Outlook.GetNameSpace('MAPI'); // Get root Calendars folder CalendarsRoot := NameSpace.GetDefaultFolder(olFolderCalendars); // Iterate to subfolder CalendarsFolder := CalendarsRoot; while CalendarFolderPath <> '' do begin // Extract next subfolder Position := Pos('\', CalendarFolderPath); if Position > 0 then begin SubFolderName := Copy(CalendarFolderPath, 1, Position - 1); CalendarFolderPath := Copy(CalendarFolderPath, Position + 1, Length(CalendarFolderPath)); end else begin SubFolderName := CalendarFolderPath; CalendarFolderPath := ''; end; if SubFolderName = '' then Break; // Search subfolder Found := False; for Counter := 1 to CalendarsFolder.Folders.Count do begin TestCalendarFolder := CalendarsRoot.Folders.Item(Counter); if LowerCase(TestCalendarFolder.Name) = LowerCase(SubFolderName) then begin CalendarsFolder := TestCalendarFolder; Found := True; Break; end; end; // If not found create if not Found then CalendarsFolder := CalendarsFolder.Folders.Add(SubFolderName); end; // Create Calendar item OutlookCalendar := CalendarsFolder.Items.Add; // Fill Calendar information OutlookCalendar.Start := Calendar.Start; OutlookCalendar.End := Calendar.Ende; OutlookCalendar.Categories := Calendar.Categories; OutlookCalendar.Subject := Calendar.Subject; OutlookCalendar.Body := Calendar.Body; // ### Further properties // Save Calendar OutlookCalendar.Save; // Disconnect from outlook Outlook := Unassigned; end; procedure TForm1.Button1Click(Sender: TObject); var Ordner: string; Calendar: TCalendar; begin Ordner := 'Test-Ordner'; Calendar.Start := DateToStr(Datum.DateTime) + ' ' + TimeToStr(Startzeit.DateTime); Calendar.Ende := DateToStr(Datum.DateTime) + ' ' + TimeToStr(Endzeit.DateTime); Calendar.Categories := Kategorie.Text; Calendar.Subject := Betreff.Text; Calendar.Body := Beschreibung.Text; OutlookAddCalendar(Ordner,Calendar); end; end. Es kommen folgende Fehler: 1. Starten des Servers fehlgeschlagen 2. Starten des Servers fehlgeschlagen, ProgID: "Outlook.Application". Es wäre schön wenn mir jemand Zeitnah helfen könnte. Viele Dank und schöne Grüße. |
AW: Outlook Kalender lesen und schreiben
Hallo Kevin11,
vielleicht hilft das weiter: ![]() Bis bald Chemiker |
AW: Outlook Kalender lesen und schreiben
Hallo Chemiker,
du hast nicht zufällig einen Code, der die Daten von Outlook ausliest? Ich habe das ganze mit D10 in eine VM gepackt und dort funktioniert es wunderbar. Edit: Auslesen klappt hervorragend. Jetzt stoße ich nur auf so eine dumme Outlook-Meldung: Programm versucht, auf Ihre in Outlook gespeicherten E-Mail-Adressinformationen zuzugreifen. Geschieht dies unerwartet, klicken Sie auf 'Verweigern'. Überprüfen Sie, ob Sie die aktuellste Version der Antivirusprogramms haben. Wie kann ich diese Meldung umgehen? Ist nämlich tierrisch nervig bei jedem Aufruf auf Erteilen zu klicken. Vielen Dank und Gruß Kevin11 :thumb: |
AW: Outlook Kalender lesen und schreiben
ich weis, der Thread ist jetzt schon was älter,
aber ich habe das Problem das ich nur den "Kalender" auslesen kann, wie schaffe ich das ich einen freigegebenen Kalender auswähle? Kann mir da einer Helfen? Kann auch sein das ich da jetzt etwas aufm schlauch steh... :-) Danke PS: Outlook2016
Delphi-Quellcode:
var outlook, NameSpace,calendarfolder, Termine, Termin,topfolder: OleVariant; i: Integer; begin outlook := CreateOleObject('Outlook.Application'); NameSpace := outlook.GetNameSpace('MAPI'); TopFolder := NameSpace.Folders[1]; CalendarFolder := TopFolder.Folders('Kalender'); Termine := NameSpace.GetDefaultFolder($00000009); for i := 1 to Termine.Items.Count do begin Termin := Termine.Items.Item(i); // Titel des Termins und Startdatum mit Zeit auslesen: memo1.lines.add(DateTimeToStr (Termin.Start) + ' bis ' + DateTimeToStr (Termin.End)+ ': ' + Termin.Subject + ', ' + Termin.Location + ', ' + Termin.Body ); end; Outlook := UnAssigned; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz