Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

VBA Outlook Kalender wechseln

814 views
Skip to first unread message

Sebastian Schaefers

unread,
Mar 19, 2002, 6:18:16 AM3/19/02
to
Hi NG,
wie kann ich etwas mit VBA in einen anderen Kalender eintragen als in meinem
Standart Kalender ?
Irgentwie so :
folder("meine termine").activate ???


Bruno Krieger

unread,
Mar 19, 2002, 6:35:02 AM3/19/02
to
Hallo,

Die Variable mvarExportFolder beinhalted die ID des gewünschten Ordners, die
musst du vorher herausfinden
....
------------

Dim oMapiFolders As Outlook.MAPIFolder
Dim oAppItem As Outlook.AppointmentItem

dim oOutlook As Outlook.Application
Dim oNamespace As Outlook.NameSpace


set oOutlook = CreateObject("Outlook.Application.9")
Set oNamespace = oOutlook.GetNamespace("MAPI")

Set oMapiFolders = oNamespace.GetFolderFromID(mvarExportFolder)
Set oAppItem = oMapiFolders.Items.Add(olAppointmentItem)

with oAppitem
.Start = cdate("12.12.2002")
.End = cdate("13.12.2002")
.Subject = "Test"
.Save
end with
-----------------------

Hoffe das hilft dir weiter (ist zwar VB-Code, doch das meisste solltest du
in VBA wiederverwenden können...)

Gruss Bruno

"Sebastian Schaefers" <sebastian...@gmx.de> schrieb im Newsbeitrag
news:a776po$sd8$1...@news.mch.sbs.de...

W.Flamme

unread,
Mar 20, 2002, 2:02:52 PM3/20/02
to
"Bruno Krieger" <bruno....@intrasoft.ch> schrieb im Newsbeitrag
news:e406jmzzBHA.2660@tkmsftngp05...
> Set oMapiFolders = oNamespace.GetFolderFromID(mvarExportFolder)

...oder über .Folders("Persönliche Ordner").Folders("Mein
Subfolder").Folders("Mein SubSubFolder")...

--

Wolfgang Flamme
wfl...@mainz-online.de

"I love deadlines. I love the whooshing sound they make as they fly by."
Douglas Adams

Bruno Krieger

unread,
Mar 21, 2002, 5:51:28 AM3/21/02
to
Aber wenn du den Namen fix reinprogrammierst, und diese Ordner anschliessend
Umbenennst hast du aber ein Problem... Darum sprichst du sie besser über die
IDs an..

"W.Flamme" <wfl...@mainz-online.de> schrieb im Newsbeitrag
news:a7ccni$f63$4...@news.rhein-zeitung.de...

Sebastian Schaefers

unread,
Mar 22, 2002, 5:13:09 AM3/22/02
to
Das mit dem Eintragen hat super geklappt, besten Dank für eure Hilfe!

Ich hab nur gleich noch zwei Fragen:

1. ich schreibe ja den Inhalt einer Variable in z.B. den Betreff. Wenn ich
normalen Text und den Inhalt einer Variable in den Betreff schreiben will,
mache ich das mit einem +, wie kann ich noch einen Zeilenumbruch einfügen ?
Mit "/n" oder so ?

2. wie kann ich zuerst ALLE termine löschen, und dann die neuen eintragen ??

Danke


"W.Flamme" <wfl...@mainz-online.de> wrote in message
news:a7ccni$f63$4...@news.rhein-zeitung.de...

Bruno Krieger

unread,
Mar 22, 2002, 5:28:14 AM3/22/02
to
Hallo Sebastian

1. Einene Zeilenumbruch kannst du in VB/VBA mit vbNewLine erzeugen ("Das ist
mein Text, danach gibt es einen Zeilenumbruch" & vbnewline & "das ist dann
der weitere text...")

2. Du musst dir zuerst den gewünschten Kalender anschnallen mit
GetFolderFromId. Der Rest Steht in der Hilfe wenn du Delete eingibst.

Gruss Bruno

"Sebastian Schaefers" <sebastian...@gmx.de> schrieb im Newsbeitrag

news:a7f03n$bmp$1...@news.mch.sbs.de...

W.Flamme

unread,
Mar 22, 2002, 4:09:08 AM3/22/02
to
"Bruno Krieger" <bruno....@intrasoft.ch> schrieb im Newsbeitrag
news:ePfZgXM0BHA.2804@tkmsftngp05...

> Aber wenn du den Namen fix reinprogrammierst, und diese Ordner
anschliessend
> Umbenennst hast du aber ein Problem... Darum sprichst du sie besser
über die
> IDs an..

Bei Anwendungen (die oft auf hierarchischer Ordnerstruktur basieren)
klappt diese Methode aber nicht; oft will man ja zB eine solche
Anwendung in einen anderen Projektordner kopieren oder was
testen/erweitern und da überall im Code von Hand anpassen und später und
überall wieder - also ich weiß nicht...

Ich bin mit absoluten Verweisen innerhalb der Anwendungsstruktur bislang
ganz gut gefahren, also zB:
Set fldAppRoot=Item.Parent.Parent
Set fld2nd=fldAppRoot.Folders("1st").Folders("2nd")
Set itmNew=fld2nd.Items.Add("IPM.xxxx")
...

Aber jeder wie er mag oder muß.

Bruno Krieger

unread,
Mar 22, 2002, 9:22:19 AM3/22/02
to
Ich weiss nicht ob du mich richtig verstehst...

Ich programmiere die ID sicher nicht fix in den Code rein, bei meiner
Applikation gibt ich dem User eine Auswahl (CSCombobox) mit den vorhandenen
Kalender im Outlook, bei der Auswahl eines Kalenders merke ich mir anstatt
den Namen, die ID des Kalenders...

aber ist ja egal...
schönes Wochenende
Gruss Bruno

"W.Flamme" <wfl...@mainz-online.de> schrieb im Newsbeitrag

news:a7f8jr$6hc$3...@news.rhein-zeitung.de...

Dirk Hachmeyer

unread,
Mar 25, 2002, 2:33:35 AM3/25/02
to
Hallo NG,

ich poste mal die Antwort von meinem 'lieben' Kollegen Sebastian Schäfers,
da er aus unerklärlichen Gründen nicht posten kann. Da er aber immer noch
alles lesen kann, darf fröhlich palierend weiter geantwortet werden.

MfG Dirk aus NRW

> Hallo Sebastian
>
> 1. Einene Zeilenumbruch kannst du in VB/VBA mit vbNewLine erzeugen ("Das
ist
> mein Text, danach gibt es einen Zeilenumbruch" & vbnewline & "das ist dann
> der weitere text...")


> 2. Du musst dir zuerst den gewünschten Kalender anschnallen mit
> GetFolderFromId. Der Rest Steht in der Hilfe wenn du Delete eingibst.

Hilfe, dann löscht er mir ja den ganzen Kalender !
Er soll nur alle Einträge löschen !
geht das auch ?

Wenn ich zwei Einträge mit dem gleichen Datum habe, überschreibt er mir den
einen, das ist auch Scheiße, kann man nicht generell saben, er soll nen
neuen Termin anlegen ?


Bruno Krieger

unread,
Mar 25, 2002, 3:27:06 AM3/25/02
to
Hallo Sebastian,

also erstens, mit GetFolder löschst du nicht den ganzen Ordner, sofern du es
richtig machst... hier der Code dazu...
-------------------------------------------


dim oOutlook As Outlook.Application
Dim oNamespace As Outlook.NameSpace

Dim oMapiFolders As Outlook.MapiFolder
Dim oItems As Outlook.Items
Dim nCount As Integer

set oOutlook = CreateObject("Outlook.Application.9")
Set oNamespace = oOutlook.GetNamespace("MAPI")

Set oMapiFolders = oNamespace.GetFolderFromID(hier kommt die ID des
Ordners rein, wessen Einträge du löschen möchtest..
Set oItems = oMapiFolders.Items

For nCount = oItems.Count To 1 Step -1
oItems.Item(nCount).Delete
Next nCount
'-------------------------------------------------

zum zweiten, mit dem folgenden Code, wird immer ein neuer Eintrag erzeugt,
also kein item überschrieben

---------------------------------------------------------


Dim oAppItem As Outlook.AppointmentItem
dim oOutlook As Outlook.Application
Dim oNamespace As Outlook.NameSpace

set oOutlook = CreateObject("Outlook.Application.9")
Set oNamespace = oOutlook.GetNamespace("MAPI")

Set oAppItem= oOutlook.CreateItem(olAppointmentItem)

With oAppItem

.Start = "31.05.2002"
.End = "31.05.2002"
.Subject = "Test"
.Save
End With
---------------------------------------------------------------
Gruss Bruno


"Dirk Hachmeyer" <di...@hachmeyer.de> schrieb im Newsbeitrag
news:a7mjsf$6v1$1...@news.mch.sbs.de...

Sebastian Schaefers

unread,
Mar 25, 2002, 7:23:58 AM3/25/02
to
Ich habe folgende Schleife:


Do Until ActiveCell.Offset(i, 0).Value = "EOF"

If ActiveCell.Offset(i, 8).Value <> "" Then

With oAppItem
.Subject = "MEK 90 Rundschreiben wird fällig"
.Body = "Produktbeschreibung: " + ActiveCell.Offset(i,
0).Value & vbNewLine & "Produkt Nr.: " + ActiveCell.Offset(i, 1).Value
.Location = "Test"
.start = "28.03.02" 'ActiveCell.Offset(i, 8).Value
.End = "28.03.02" 'ActiveCell.Offset(i, 8).Value
.Duration = 15
.ReminderMinutesBeforeStart = 10
.ReminderPlaySound = True
.ReminderSet = True
.Save
End With

End If
i = i + 1
Loop

Und wenn ich diese Schleife zwei mal durchlaufen lasse, habe ich nacher nur
einen Termin in meinem Kalender !?!


Bruno Krieger

unread,
Mar 25, 2002, 7:41:07 AM3/25/02
to
Ja logisch!!

du greifst hier immer auf das gleiche oAppItem zu!!, du musst in jeder
Wiederholung ein neues oAppItem erzeugen...
probier mal diesen Code aus (Dein Code, plus meine Erweiterung) Die Zeile
Set [oAppItem= oOutlook.CreateItem(olAppointmentItem)] ist wichtig, mit
dieser erzeugst du neue oAppItems. Ein kleiner Typ mit oAppItem.Entriid
kannst du die ID des Items anschauen, beim ausführen von
CreatItem(olAppointmentItem) ändert sich diese ID==> ein neuer Item wurde
erzeugt.

Melde dich bitte anschliesend, obs so funzt, nimmt mich nämlich wunder...

----------------------------------------


Do Until ActiveCell.Offset(i, 0).Value = "EOF"

If ActiveCell.Offset(i, 8).Value <> "" Then

Set oAppItem= oOutlook.CreateItem(olAppointmentItem)

With oAppItem
.Subject = "MEK 90 Rundschreiben wird fällig"
.Body = "Produktbeschreibung: " + ActiveCell.Offset(i,
0).Value & vbNewLine & "Produkt Nr.: " + ActiveCell.Offset(i, 1).Value
.Location = "Test"
.start = "28.03.02" 'ActiveCell.Offset(i, 8).Value
.End = "28.03.02" 'ActiveCell.Offset(i, 8).Value
.Duration = 15
.ReminderMinutesBeforeStart = 10
.ReminderPlaySound = True
.ReminderSet = True
.Save
End With

End If
i = i + 1
Loop

----------------------------------------

Gruss Bruno

"Sebastian Schaefers" <sebastian...@gmx.de> schrieb im Newsbeitrag

news:a7n4t0$kl2$1...@news.mch.sbs.de...

Sebastian Schaefers

unread,
Mar 25, 2002, 7:52:43 AM3/25/02
to
Jetzt schreibt er mir keinen eintrag mehr in den Kalender !

Sebastian Schaefers

unread,
Mar 25, 2002, 8:27:48 AM3/25/02
to
Oh, hab schon gesehen, er hat es immer in MEINEN Kalender geschrieben, und
nicht in den extra Kalender.
Ich habs aber jetzt (denke ich) !!!!


DANKE


Bruno Krieger

unread,
Mar 25, 2002, 8:34:55 AM3/25/02
to
Kommt eine Fehlermeldung?? (hast du ein on error resume next drin??) Wenn
keine Fehlermeldung kommt, dann wird er ein Item erzeugt habene, aber
vielleicht im falschen Ordner....

Probier mal das.. so muss es gehen.., wenn nicht schreib mir ein Mail (geht
schneller)

Dim oMapiFolders As Outlook.MAPIFolder
Dim oAppItem As Outlook.AppointmentItem

Set oMapiFolders = oNamespace.GetFolderFromID(ID VON DEIMEM ORDNER...)

Do Until ActiveCell.Offset(i, 0).Value = "EOF"

If ActiveCell.Offset(i, 8).Value <> "" Then
Set oAppItem = oMapiFolders.Items.Add(olAppointmentItem)


With oAppItem
.Subject = "MEK 90 Rundschreiben wird fällig"
.Body = "Produktbeschreibung: " + ActiveCell.Offset(i,
0).Value & vbNewLine & "Produkt Nr.: " + ActiveCell.Offset(i, 1).Value
.Location = "Test"
.start = "28.03.02" 'ActiveCell.Offset(i, 8).Value
.End = "28.03.02" 'ActiveCell.Offset(i, 8).Value
.Duration = 15
.ReminderMinutesBeforeStart = 10
.ReminderPlaySound = True
.ReminderSet = True
.Save
End With

End If
i = i + 1
Loop

"Sebastian Schaefers" <sebastian...@gmx.de> schrieb im Newsbeitrag
news:a7n6iu$lv9$1...@news.mch.sbs.de...

0 new messages