Outlookkalender

Einbindung von Office-Komponenten wie Word, Excel usw.

Moderator: Moderatoren

Outlookkalender

Beitragvon Benz » Mi, 02. Sep 2015 9:21

Hi,

Ich würde gerne schnell und einfach die Outlookfunktionen für den Kalender benutzen. Gibt es hierfür vielleicht eine DLL, die man einbinden kann
oder etwas ähnliches ? Vielleciht auch eine COM Schnittstelle ? Alles, was ich bisher gefunden hab bezieht sich auf das Senden/Empfangen von Mails.
Oder könnt ihr mir vielleicht eine andere Bibliothek für Kalenderfunktionen vorschlagen?

Bin für jede Antwort dankbar :)
Benz
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 413
Registriert: Mo, 30. Mai 2011 15:06

Re: Outlookkalender

Beitragvon Wolfgang Ciriack » Mi, 02. Sep 2015 11:38

Hallo,
ich greife so auf den Outlook Kalender zu:
Code: Alles auswählen
oOutlook := CreateObject( "Outlook.Application" )
IF Empty(oOutLook)
  ** Fehlerbehandlung
  return
ENDIF
oOutlook:TreatDateAsString(.T.)

oNS := oOutlook:GetNamespace( "MAPI" )  //* returns NameSpace
IF Empty(oNS)
   ** Fehlerbehandlung
   return
endif

oTermine:=oNS:GetDefaultFolder(olFolderCalendar) //* Standard Kalenderfolder
if oTermine=NIL
    oTermine:=oNS:PickFolder()             //* returns NameSpace
     if oTermine<>NIL
         if oTermine:DefaultItemType<>olAppointmentItem
            ** Kein Kalender-Order gewählt
.......
.....
bSaveError := ErrorBlock() // alten Error-Codeblock sichern
ErrorBlock( {|e| Break(e)} ) // neuen Error-Codeblock etablieren - Break im Fehlerfall (Sprung zum "Recover")
BEGIN SEQUENCE
   nOlAnzahl:=oTermine:items:count
   for i:=1 to nOlAnzahl
      oTermin := oTermine:items(i)
      if !empty(oTermin)
         dDatVon:=dfdt(oTermin:Start)
         if oTermin:IsRecurring
            ** wiederholende Termin
            oPatt:=oTermin:GetRecurrencePattern()
            ty:=oPatt:RecurrenceType
            t_von:=tfdt(oPatt:StartTime)
            t_bis:=tfdt(oPatt:EndTime)
            dBisDat:=dfdt(oPatt:PatternEndDate)
            if dBisDat>=date()
               ** nur zukünftige Termine
               do case
               case ty=olRecursDaily
                  for x:=dDatVon to dBisDat
                     if x>=date()
                        vdat:=ctod(strzero(day(x),2)+"."+strzero(month(x),2)+"."+str(year(date()),4))
                        ** Termin in Array
                        AAdd(aOL,{D2DTKal(vdat, t_von),D2DTKal(vdat, t_bis),oTermin:Subject,oTermine:items(i)})
                     endif
                  next
               case ty=olRecursWeekly
                  for x:=dDatVon to dBisDat
                     if x>=date()
                        if IsBit(oPatt:DayOfWeekMask,dow(x))
                            AAdd(aOL,{D2DTKal(x, t_von),D2DTKal(x, t_bis),oTermin:Subject,oTermine:items(i)})
                        endif
                     endif
                  next
               case ty=olRecursMonthly
                  for x:=month(dDatVon) to 12
                     if x>=month(date())
                        vdat:=ctod(strzero(oPatt:DayOfMonth,2)+"."+strzero(x,2)+"."+str(year(date()),4))
                        AAdd(aOL,{D2DTKal(vdat, t_von),D2DTKal(vdat, t_bis),oTermin:Subject,oTermine:items(i)})
                     endif
                  next
               case ty=olRecursYearly
                  vdat:=ctod(substr(dtoc(dDatVon),1,6)+str(year(date()),4))
                  if vdat<date()
                     ** immer nur 1 Jahr im Voraus
                     vdat:=ctod(substr(dtoc(dDatVon),1,6)+str(year(date())+1,4))
                  endif
                  AAdd(aOL,{D2DTKal(vdat, t_von),D2DTKal(vdat, t_bis),oTermin:Subject,oTermine:items(i)})
               case ty=olRecursYearNth
               case ty=olRecursMonthNth
               endcase
            endif
         elseif dDatVon>=date()
            AAdd(aOL, {oTermin:Start,oTermin:GetProperty("End"),oTermin:Subject,oTermine:items(i)})
         endif
      endif
   next
RECOVER USING oError
END SEQUENCE
ErrorBlock(bSaveError) // alten Error-Codeblock restaurieren
** Dann Termine aus Array verarbeiten

Für Termine in Outlook einfügen verwende ich:
Code: Alles auswählen
oTermine:=oNS:GetDefaultFolder(olFolderCalendar) //* Standard Kalenderfolder
** oder statt Default Calender einen wählen oder angeben.
if (oSatz:=oTermine:Items:Add(olAppointmentItem))<>NIL
     oSatz:subject:=...text
     oSatz:start:=...datum/zeit
     ** evtl. Ende
     oSatz:SetProperty("end",...datum/zeit)
     oSatz:Save()


Umwandlung von Datum/Zeit in Outlook-Zeitstring
Code: Alles auswählen
static function D2DT(vdat, vtim)
return str(year(vdat),4)+"-"+strzero(month(vdat),2)+"-"+strzero(day(vdat),2)+" "+vtim+":00.000"
Viele Grüße
Wolfgang
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 2245
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin

Re: Outlookkalender

Beitragvon Wolfgang Ciriack » Mi, 02. Sep 2015 11:39

Ach so, es muss natürlich die outlook.ch eingebunden werden.
Viele Grüße
Wolfgang
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 2245
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin

Re: Outlookkalender

Beitragvon AUGE_OHR » Mi, 02. Sep 2015 17:32

Benz hat geschrieben:Ich würde gerne schnell und einfach die Outlookfunktionen für den Kalender benutzen. Gibt es hierfür vielleicht eine DLL, die man einbinden kann oder etwas ähnliches ?
siehe dir mal http://xbaseforum.de/viewtopic.php?f=62&t=5186 an.
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
 
Beiträge: 10315
Registriert: Do, 16. Mär 2006 8:55
Wohnort: Hamburg

Re: Outlookkalender

Beitragvon Werner_Bayern » Mi, 02. Sep 2015 22:02

AUGE_OHR hat geschrieben:siehe dir mal http://xbaseforum.de/viewtopic.php?f=62&t=5186 an.

ist das ein falscher Link?
Du hast keine Berechtigung, dieses Forum zu lesen.
es grüßt euch

Werner
Benutzeravatar
Werner_Bayern
Programmier-Gott
Programmier-Gott
 
Beiträge: 1235
Registriert: Sa, 30. Jan 2010 23:58
Wohnort: Niederbayern

Re: Outlookkalender

Beitragvon Martin Altmann » Mi, 02. Sep 2015 22:13

Nein Werner, kein falscher Link. Er führt in den nur für Mitglieder des Vereins zugänglichen Bereich.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: http://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: http://meldungen.altem.de/

Mitglied der XUG Osnabrück
stellv. Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
 
Beiträge: 13238
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin

Re: Outlookkalender

Beitragvon AUGE_OHR » Mi, 02. Sep 2015 22:14

Werner_Bayern hat geschrieben:ist das ein falscher Link?
Du hast keine Berechtigung, dieses Forum zu lesen.
sorry ... ich habe nicht darauf geachtet das es unter
Foren-Übersicht » Deutschsprachige Xbase-Entwickler e. V. » Mitgliederbereich » Xbase-Entwickler: Projekte
liegt.
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
 
Beiträge: 10315
Registriert: Do, 16. Mär 2006 8:55
Wohnort: Hamburg

Re: Outlookkalender

Beitragvon Werner_Bayern » Mi, 02. Sep 2015 22:25

ok, danke. :|
es grüßt euch

Werner
Benutzeravatar
Werner_Bayern
Programmier-Gott
Programmier-Gott
 
Beiträge: 1235
Registriert: Sa, 30. Jan 2010 23:58
Wohnort: Niederbayern

Re: Outlookkalender

Beitragvon Benz » Do, 03. Sep 2015 8:52

ja, da komme ich auch nicht rein :) :D
@Wolfgang, schonmal danke, ich versuch das gleich mal :)

und noch ne Änderung des Beitrages :D : @Wolfgang: das ist ja jetzt eine COM-Schnittstelle oder nicht?
Benz
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 413
Registriert: Mo, 30. Mai 2011 15:06


Zurück zu MS Office

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast