an die „Access-Variante“ hatte ich auch schon gedacht, befürchte aber dass man schnell an die Grenzen des Machbaren stößt…
Ob Access dabei direkt auf die outlook.pst zugreift? Das wäre vielleicht ein Vorteil. Ein VB-App würde wahrscheinlich „nur“ auf Outlook zurückgreifen. Oder liege ich da falsch?
Wie auch immer, das Thema scheint noch andere Interessenten zu haben…
access greift über eine schnittstelle (frag mich nicht welche) lesend und schreibend direkt auf die pst zu. der exchange/oulook-import-assi stellt dir dabei die verbindung her.
wie schon weiter ober erwähnt, wird es sicher möglich sein, das über eine kleine VB.net-App und die VB.net<->Soap-Schnittstelle die Daten ins IPS zu bekommen. Leider habe bei der Umsetzung so meine Probleme…
Vielleicht ist ja an anderer Stelle jemand dort besser bewandert?
Hier gibt es auch ein Makro, vielleicht könnte man das umbauen!?
Dann würde es auch nichts ausmachen wenn Outlook auf einem anderen Rechner läuft. Im oben genannten Link werden die iCal Dateien via FTP veröffentlicht.
Man kann auch die PST auf ein Netzlaufwerk legen. Wird zwar von MS nicht supportet, aber es geht.
D.h. es könnten theoretisch zwei Outlook Installation mit ein und derselben PST arbeiten. Gleichzeitige Zugriffe würde ich vermeiden. D.h. IPS sollte die Termine dann nur Nachts aus der PST holen wenn das andere Outlook sicher geschlossen ist.
COM-Klassenkonstruktor. Die Parameter haben die folgende Bedeutung:
module_name
Kann eine ProgID, Klassen-ID oder der Moniker der zu ladenden Komponente sein. Eine ProgID ist typischerweise der Applikations- oder DLL-Name, gefolgt von einem Punkt, gefolgt vom Objektnamen, z.B. Word.Application Eine Klassen-ID ist die UUID, die eineindeutig eine bestimmte Klasse identifiziert. Ein Moniker ist eine spezielle Form der Benennung, konzeptähnlich dem URL-Schema, das eine Ressource identifiziert und angibt, wie sie geladen werden soll. Beispielsweise könnten Sie Word laden und ein Objekt erzeugen, das ein Worddokument repräsentiert, indem Sie den vollständigen Pfad zum Worddokument als Modulnamen angeben, oder Sie können LDAP: als einen Moniker verwenden, um das ADSI-Interface zu LDAP zu nutzen.
server_name
Name des DCOM-Servers, auf dem die Komponente geladen und ausgeführt werden soll. Ist NULL angegeben, wird das Objekt auf dem Standardwert dieser Applikation ausgeführt. Der Standardwert ist typischerweise die Ausführung auf der lokalen Maschine, obwohl der Administrator die Applikation so konfiguriert haben kann, dass sie auf einer anderen Maschine startet. Wenn Sie einen Nicht-NULL-Wert für den Server angeben, wird PHP das Laden des Objekts zurückweisen, wenn nicht auch die Konfigurationsoption auf TRUE gesetzt ist.
Mir ist nicht ganz klar was mit dem Servernamen gemeint ist. Eventuell kann man ja doch Outlook auf einem anderen PC damit steuern.
Und auf dem iPhone habe ich „Saizuke“ am laufen, mit dem ich ebenfalls Termine eingeben und „iPhone > GoogleCalendar > IPS“ sync’en kann. Gibt es vielleicht auch für andere Handy’s.
Habe ich mal probiert, komme da aber nicht weiter.
Ich habe mir ein VB Marko, zusammen gebaut. Es muß in Outlook als Makro eingegeben werde.
Sub Termine_expotieren()
Dim objApp As Application
Dim objNS As NameSpace
Dim objCalendar As MAPIFolder
Dim objItem As AppointmentItem
Dim strSubject As String
Dim ObjRecipient As Recipient
Set objApp = CreateObject("Outlook.Application")
Set objNS = objApp.GetNamespace("MAPI")
Set objCalendar = objNS.GetDefaultFolder(olFolderCalendar)
Open "C:\Temp\Termine.txt" For Output As #1 'Export Datei öffnen
For Each objItem In objCalendar.Items
With objItem
Betreff = .Subject
Datum_Start = Left(.Start, 10)
Datum_Ende = Left(.End, 10)
Zeit_Start = Mid(.Start, 12)
Zeit_Ende = Mid(.End, 12)
Dauer = IIf(.Duration = 1440, "Ganztägig", .Duration & " Minuten")
Serie = IIf(.IsRecurring = True, "Serie", "")
If Serie = "Serie" Then ' Überwachen ob Serie
Datum_Start = Left(.Start, 6) + Mid(Now, 7, 4)
Datum_Ende = ""
If DateValue(Datum_Start) < Now Then
Datum_Start = Left(.Start, 6) + Mid(Now + 360, 7, 4)
End If
End If
If Dauer = "Ganztägig" Then ' Überwachen ob Ganztäglich
Datum_Ende = ""
End If
If (DateValue(Datum_Start) >= Now And DateValue(Datum_Start) < Now + 360) Then
Print #1, "" & Betreff & "," & Datum_Start & "," & Zeit_Start & "," & Datum_Ende & "," & Zeit_Ende & "," & Dauer & "," & Serie & vbCrLf
End If
End With
Next
Close #1
' MsgBox "Termine exportiert"
End Sub
Ist natürlich erst der Anfang, mal sehen was ich daraus noch machen kann.