AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Outlook Kalender lesen und schreiben

Ein Thema von Kevin11 · begonnen am 31. Aug 2011 · letzter Beitrag vom 3. Apr 2016
Antwort Antwort
Kevin11

Registriert seit: 11. Aug 2011
113 Beiträge
 
Delphi XE Professional
 
#1

Outlook Kalender lesen und schreiben

  Alt 31. Aug 2011, 11:01
Hallo,

wie kann ich Daten aus dem Outlook Kalender lesen und schreiben?

Habe es so einmal probiert:
Delphi-Quellcode:
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.
Code ist von hermidelphi.

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.
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Outlook Kalender lesen und schreiben

  Alt 31. Aug 2011, 18:48
Hallo Kevin11,

vielleicht hilft das weiter: http://www.delphipraxis.net/1078732-post16.html

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Kevin11

Registriert seit: 11. Aug 2011
113 Beiträge
 
Delphi XE Professional
 
#3

AW: Outlook Kalender lesen und schreiben

  Alt 2. Sep 2011, 07:18
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


Geändert von Kevin11 ( 2. Sep 2011 um 09:58 Uhr)
  Mit Zitat antworten Zitat
ulli007

Registriert seit: 29. Sep 2014
1 Beiträge
 
#4

AW: Outlook Kalender lesen und schreiben

  Alt 3. Apr 2016, 20:57
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;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:44 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