vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
VBA - 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!!!

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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!!!

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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!!!

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VBA - Outlook-Makro - Kalendereintrag mit Voreinstellungen erfassen 
Autor: V A T
Datum: 25.07.16 00:00

Hallo Blackbox,

es ist mir - mit meinem zugegeben sehr rudimentären Verständnis - gelungen aus dem Termin (00:00 bis 00:30) ein ganztägiges Ereignis zu machen. Dazu habe ich aus der Liste in deinem Link die Eigenschaft ".AllDayEvent" auf "True" gesetzt.

Was mir noch nicht im Eigenstudium gelungen ist, ist ein Serienereignis daraus zu machen. Es gibt zwar eine Methode (schäm, weiß nicht mal was der Unterschied zwischen Methode und Eigenschaft ist) "GetRecurrencePattern", welche '...ein RecurrencePattern-Objekt zurück, das die Serienattribute eines Termins darstellt...'.

Aber wie kann ich damit jetzt z.B. festlegen, dass das ein jährliches Ereignis sein soll?! Könntest du mir da nochmal eine Zeile Code schicken, wie ich das ansteuere? Da fehlt mir die Grundkenntnis...

Gruß und Danke für Deine Unterstützung!!!

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!!!

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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!!!

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VBA - Outlook-Makro - Kalendereintrag mit Voreinstellungen erfassen 
Autor: V A T
Datum: 25.07.16 22:48

Hallo Blackbox,

ein Problem hat sich heute noch aufgetan - immer wenn man glaubt man hätte es geschafft...ich war so stolz auf mich...

Aber, vielleicht fällt dir dazu spontan was ein...

Ich habe in meinem lokalen Outlook2010 zwei(!) Outlook.com-Konten eingebunden - d.h. ich habe zwei(!) Kalender. Das Problem ist nun, dass das Makro zwar brav seine Aufgabe erledigt, aber ich nicht vorgeben kann (zumindest weiß ich nicht wie), in welchem der beiden Kalender das Ereignis erzeugt wird. Leider wird es scheinbar immer im Standardkalender erzeugt - das ist aber leider für meine Zwecke genau der falsche...

Hast du eine Idee, wie ich das noch mitgeben kann?!

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!!!

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel