| |
Visual-Basic EinsteigerVBA - Outlook-Makro - Kalendereintrag mit Voreinstellungen erfassen | | | Autor: V A T | Datum: 22.07.16 11:04 |
| Hallo,
ich habe ein Problem und suche Eure bewährte Unterstützung. Vielleicht kann mir jemand helfen. Es dreht sich um Outlook-VBA und damit kenn ich mich noch gar nicht aus.
Ich möchte ein Makro schreiben, bei dem ein neues ganztägiges Ereignis angelegt wird, welches mit bestimmten Attributen vorbelegt ist, damit ich die nicht jedesmal eingeben muss. Also z.B. soll die Kategorie "aaa" mitgegeben sein, der Betreff "bbb", die Einstellung "keine Erinnerung", die Verfügbarkeit "frei".
Kann mir jemand ein paar zeilen Code geben, mit dem ich meine Versuche starten kann?
Geuß und danke an alle, die mich unterstützen!
V A T
Vielen Dank an alle in diesem Forum, welche mir Ihre Zeit schenken und sich mit meinen Problemen befassen! Ich weiß das ernsthaft zu schätzen und danke allen, die sich mit dieser Frage befassen herzlich!!! | |
Re: VBA - Outlook-Makro - Kalendereintrag mit Voreinstellungen erfassen | | | Autor: Blackbox | Datum: 23.07.16 12:32 |
| Hallo,
das kann man so machen:
Public Sub MakeTerm(ByVal sTermin As Date, ByVal sBetreff As String)
Dim objTerm As AppointmentItem
Set objTerm = Outlook.Application.CreateItem(olAppointmentItem)
With objTerm
.Start = sTermin
.Subject = sBetreff
.Categories = "aaa"
.ReminderMinutesBeforeStart = 0 'keine Erinnerung
.ReminderSet = False
.Save
End With
Set objTerm = Nothing
End Sub | |
Re: VBA - Outlook-Makro - Kalendereintrag mit Voreinstellungen erfassen | | | Autor: V A T | Datum: 23.07.16 22:17 |
| Hallo Blackbox,
vielen Dank für Deine schnelle und kompetente Hilfe!!!
Bereits ausprobiert und das ist bereits ein prima Ansatz! Aber...drei Probleme habe ich noch:
1. Ich möchte ein "Ganztägiges Ereignis" einstellen, keinen "Termin". Dein Code produziert aber einen "Termin" von 00:00 bis 00:30 Uhr am angegebenen Tag.
2. Ich möchte ihn als "frei" kennzeichnen ("Anzeigen als"), nicht als belegt. Da gibt es sicher auch eine Eigenschaft (analog ".start", ".subject", ".categories", ...) für. Hast du da evt. eine Liste oder einen Tipp?!
3. Zum Ende das Wichtigste: Ich hatte mich wohl leider ungenau ausgedrückt (sorry, mein Fehler).
Ich möchte nicht, dass das ganztägige Ereignis direkt abgespeichert wird, sondern nur, dass sich die Ereignius-Eingabemaske mit den entspreche vorgegebenen Werten öffnet. Ich will sie dann nach meinen Vorstellungen ergänzen/verändern und erst mit klick auf den Speichern-Button endgültig abspeichern können. (Falls sowas gar nicht geht, dann als Workaround evt. erstellen, direkt speichern und dann automatisch direkt wieder öffnen)
Hast Du hierzu noch Tipps für mich?!
Auf alle Fälle: Nochmals dank für deine Unterstützung, ich weiß das zu schätzen!!!
Gruß
V A T
Vielen Dank an alle in diesem Forum, welche mir Ihre Zeit schenken und sich mit meinen Problemen befassen! Ich weiß das ernsthaft zu schätzen und danke allen, die sich mit dieser Frage befassen herzlich!!! | |
Re: VBA - Outlook-Makro - Kalendereintrag mit Voreinstellungen erfassen | | | Autor: Blackbox | Datum: 24.07.16 10:35 |
| Hallo,
das sollte auch nur einen Anreiz und Einstieg in das sehr umfangreiche Object-Model von
AppointmentItem sein. Aus der Microsoft MSDN ergibt sich, dass das Object sehr viele
Events auslösen kann und über genau so viele Methoden und Eigenschaften verfügt.
Eine Beschreibung von dem Allen findest du unter diesem Link https://msdn.microsoft.com/de-de/library/office/ff869026.aspx.
Um Events, ausgelöst durch Outlook-Objekte, ständig verfügbar zu machen, dazu gibt es
einen kleinen Trick.
In das globale Klassenmodul "THISOUTLOOKSESSION" (Englischsprachige Office-Version)
folgenden Code
Public WithEvents MyTerm As Outlook.AppointmentItem
Public MyGlobCol As New Collection
Private Sub Application_Startup()
Set MyTerm = Application.CreateItem(olAppointmentItem)
MyGlobCol.Add MyTerm, "GlobalTerm"
End Sub Nun sind die Events die das AppoiontmentItem auslösen kann in diesem Klassenmodul verfügbar und
zwar solange, bis die Outlook-Sitzung beendet wird.
Ich denke das bringt Dich einen großen Schritt näher an dein Ziel.
Auch gleich eine Warnung: Als ich vor einigen Jahren mit dem Kalender-Objekten experimentiert habe
ist mir ein bis heute nicht reproduzierbarer Fehler aufgetaucht der einem diesen digitalen
philosophischen Spruch präsentiert: "Der Anfang liegt vor dem Ende" Und das sitzt, obwohl alle
Kalenderobjekte gelöscht wurden.
P.S.: Die Methode Save muss ausgeführt werden wenn das Objekt definiert wird.
Beitrag wurde zuletzt am 24.07.16 um 10:41:38 editiert. | |
Re: VBA - Outlook-Makro - Kalendereintrag mit Voreinstellungen erfassen | | | Autor: V A T | Datum: 24.07.16 23:27 |
| Hi Blackbox,
danke für Deine Unterstützung. Werde ich testen!
Äh, was meinst du mit deiner philosophischen Warnbung genau?! Ich hab es nicht verstanden und bin jetzt unsicher, was ich tun bzw. liber lassen sollte...
Gruß
V A T
Vielen Dank an alle in diesem Forum, welche mir Ihre Zeit schenken und sich mit meinen Problemen befassen! Ich weiß das ernsthaft zu schätzen und danke allen, die sich mit dieser Frage befassen herzlich!!! | |
Re: VBA - Outlook-Makro - Kalendereintrag mit Voreinstellungen erfassen | | | Autor: V A T | Datum: 25.07.16 00:58 |
| Hallo Blackbox,
ich glaube jetzt habe ich es doch hinbekommen:
1. Das Ereignis wird erstellt und mit den notwendigen Weten belelegt.
2. Das Ereignis wird zum jährlichen Serienereignis gemacht.
3. Das Ereignis wird nach dem Speichern angezeigt (auskommentierter Befehl im Code) - Muss jetzt gar nicht mehr erfolgen, da ich die notwendigen Eingaben per Inputbox eingebaut habe. Würde aber gehen, wenn man wollte...
Public Sub MakeTerm()
Dim objTerm As AppointmentItem
Dim objSerie As RecurrencePattern
Dim Geburtsdatum As Date 'Geburtsdatum
Dim name As String 'Vorname Name
Dim sTermin As Date 'Datum des Ereignis
Dim sBetreff As String 'Betreff des Ereignis
'Daten aufnehmen
name = InputBox("Name (Vorname Nachname)")
Geburtsdatum = InputBox("Geburtstag (tt.mm.jjjj): ")
If IsDate(Geburtsdatum) = False Then Exit Sub
sTermin = Format(Geburtsdatum, "dd.mm.yyyy")
sBetreff = name & " (" & Format(Geburtsdatum, "dd.mm.yy") & ")"
'Ereignisserie erstellen
Set objTerm = Outlook.Application.CreateItem(olAppointmentItem)
With objTerm
.AllDayEvent = True
.Start = sTermin
.Subject = sBetreff
.Categories = "Geburtstag"
.ReminderMinutesBeforeStart = 0 'keine Erinnerung
.ReminderSet = False
End With
Set objSerie = objTerm.GetRecurrencePattern
With objSerie
.PatternStartDate = sTermin
.RecurrenceType = olRecursYearly
End With
objTerm.Save 'Objekt wird gespeichert
'objTerm.Display 'Objekt wird angezeigt
Set objTerm = Nothing
Set objSerie = Nothing
MsgBox ("Das Serienereignis zum Geburtstag von " & name & " wurde angelegt." _
& Chr$(13) & "Es wurde jedes Jahr am " & Format(Geburtsdatum, "dd.mm.") & _
" ab dem Jahr " & Format(Geburtsdatum, "yyyy") & " in den Kalender" & _
"eingetragen.")
End Sub Vielen Dank für Deine Unterstützung, ohne Dich hätte ich das nei hinbekommen!!!
Gruß
V A T
Vielen Dank an alle in diesem Forum, welche mir Ihre Zeit schenken und sich mit meinen Problemen befassen! Ich weiß das ernsthaft zu schätzen und danke allen, die sich mit dieser Frage befassen herzlich!!! | |
Re: VBA - Outlook-Makro - Kalendereintrag mit Voreinstellungen erfassen | | | Autor: Blackbox | Datum: 25.07.16 17:10 |
| Hallo,
die Fehlermeldung lautet tatsächlich: "Der Anfang liegt vor dem Ende" und sonst keinerlei Information.
Solltest Du mal so eine Fehlermeldung bekommen, wird's echt lausig. Der ist, wie beschrieben, weder reproduzierbar noch bekommst Du einen Hinweis, wo Du suchen musst. Daher mache ich mit dem Kalender von Outlook programmtechnisch nichts mehr.
Wenn Du es aber mit den Hinweisen hin bekommen hast, ist das in Ordnung | |
Re: VBA - Outlook-Makro - Kalendereintrag mit Voreinstellungen erfassen | | | Autor: Archilleus | Datum: 26.07.16 11:27 |
| Auch wir haben einen freigegeben Kalender, in dem ich Einträge vornehmen will.
Das habe ich wie folgt gelöst:
Dim OutlookApp As Outlook.Application
Dim OutlookMAPI As NameSpace
Dim OutlookCalendar As MAPIFolder
Dim OutlookAppt As Outlook.AppointmentItem
Dim OutlookUser As Outlook.Recipient
strColorNotiz="Telefonnotiz"
'Set OutlookApp = GetObject(, "Outlook.Application")
40 Set OutlookApp = New Outlook.Application
50 Set OutlookMAPI = OutlookApp.GetNamespace("MAPI")
60 Set OutlookUser = OutlookMAPI.CreateRecipient( _
"m.mustermann@provider.de") 'Text durch gültige Emailadresse ersetzen
70 OutlookUser.Resolve
80 Set OutlookCalendar = _
OutlookMAPI.GetSharedDefaultFolder(OutlookUser, olFolderCalendar)
90 Set OutlookAppt = OutlookCalendar.Items.Add
100 With OutlookAppt
110 .Subject = frmTelefonnotiz.txtBetreff
120 .Body = frmTelefonnotiz.txtBody
130 .Start = CDate(frmTelefonnotiz.xpDTPicker_Datzum( _
0).Text & " " & Format(frmTelefonnotiz.xpcmbZeit(0).Text, "hh:mm")) 'Beginnt
' am
140 .End = CDate(frmTelefonnotiz.xpDTPicker_Datzum( _
1).Text & " " & Format(frmTelefonnotiz.xpcmbZeit(1).Text, "hh:mm")) 'Endet am
' .Duration = 30 'Länge des Termins in Minuten
150 .ReminderSet = True 'Erinnerung setzen
160 .ReminderMinutesBeforeStart = fncReminderMinutes( _
frmTelefonnotiz.xpcmbZeit(2).Text)
170 .Categories = strColorNotiz
180 .Save
190 End With
200 Set OutlookApp = Nothing
210 Set OutlookAppt = Nothing
220 Set OutlookItem = Nothing
230 Set OutlookCalendar = Nothing
240 Set OutlookMAPI = Nothing
250 Set OutlookUser = Nothing Vielleicht hilft dir das weiter.
Gruß Archilleus | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevAniGif (VB/VBA)
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|