Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Excel vba: Kurze Terminserie in Outlook erstellen
#1
Hallo zusammen,

ich hoffe ihr könnt mir mal wieder helfen.
Bisher habe ich aus Excel meine Termine aus einer Tabelle heraus nach Outlook übertragen - das funktionierte auch super - dank Eurer Hilfe Smile
Um bei begrenzten Termin-Abfolgen nicht immer alle einzelnen Termine in der Tabelle auflisten zu müssen würde ich das gerne mit "einem" Datensatz machen.

Die Tabelle könnte dann ev. so aufgebaut werden:

Tabelle5
DEFGHIJKL
5SubjectStartEndeLocationColor-ID
6BetreffBeginntamEndet amTerminrasterSerienterminBeginnEndetum  
7Betreff01.05.201830.09.2018wöchentlich/monatlichja / nein18:00120HierGelbe Kategorie
Excel-Inn.de
Hajo-Excel.de
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 21.08 einschl. 64 Bit



Folgendes Makro habe im Netz für sich jährlich wiederholende Termine gefunden:
Könntet Ihr mir einen Tipp geben wie das zu ändern wäre um zeitlich begrenzte Serien-Termine, also von Datum-Start bis Datum-Stopp im wöchentlichen oder monatlichem Raster in Outlook abgebildet werden könnte.

Code:
Option Explicit
Sub Einfügen()
    'adds a list of appontments to the Calendar in Outlook
   Dim OLApp As Outlook.Application
   Dim olAppItem As Outlook.AppointmentItem
   Dim OutApp As Object, apptOutApp As Object, oApp As Object, oAddr As Object, opattern As Object
   Dim OutPattern As RecurrencePattern
   Dim datStart As Date
   
   Dim endRow As Long
   Dim wsSenden As Worksheet
   Dim row As Long
   Const startRow As Long = 6
   
   Dim Zeile As Long, Zeile1 As Long, Suchbegriff As Long
   Zeile = Range("A65536").End(xlUp).row
   
   Set oApp = CreateObject("outlook.application")
   Set oAddr = oApp.CreateItem(olAppointmentItem)
   Set wsSenden = ThisWorkbook.Worksheets("Serientermine")
   
   endRow = Zeile
   On Error Resume Next
   Set OLApp = GetObject("", "Outlook.Application")
   On Error GoTo 0
   If OLApp Is Nothing Then
       On Error Resume Next
       Set OLApp = GetObject("Outlook.Application")
       On Error GoTo 0
       If OLApp Is Nothing Then
           MsgBox "Outlook is not available!"
           Exit Sub
       End If
   End If
   
   For row = startRow To endRow
       Set OutApp = CreateObject("Outlook.Application")
       Set apptOutApp = OutApp.CreateItem(1) 'olAppointmentItem)
       With apptOutApp
           
           ' set default appointment values
           .MeetingStatus = olMeeting
           
           .AllDayEvent = True
           '.End = Now
           .Subject = "No subject"
           .Location = " "
           .Body = ""
           .ReminderSet = True
           ' read appointment values from the worksheet
           On Error Resume Next
           .Start = Cells(row, 3).Value '+ Cells(row, 5).Value
           '.End = Cells(row, 7).Value '+ Cells(row, 8).Value
           .Subject = Cells(row, 1).Value
           .Location = Cells(row, 13).Value
           .Body = Cells(row, 11).Value
           .Resources = Cells(2, 10).Value
           .ReminderMinutesBeforeStart = 720
           'mit Sound
           .ReminderPlaySound = True
           Set OutPattern = apptOutApp.GetRecurrencePattern
           OutPattern.RecurrenceType = olRecursYearly  ' wiederkehrender Termin
           .Duration = 1440
           On Error GoTo 0
           '.Save ' saves the new appointment to the default folder
           .Save
       End With
   Next
   
   Set olAppItem = Nothing
   Set OLApp = Nothing
   Set wsSenden = Nothing
   
   MsgBox "Termine wurden generiert"
End Sub


Vielen Dank für Eure Hilfe!
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#2

Guten Morgen zusammen,
hat niemand eine Idee wie mein Problem lösbar wäre?
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#3
Hallo,
ich selbst verwende zwar kein Outlook ...

PHP-Code:
        .GetRecurrencePattern.RecurrenceType olRecursYearly 'jährlich'
 
        .GetRecurrencePattern.PatternStartDate "Hier das Startdatum angeben."
 
        .GetRecurrencePattern.Interval 'einmalig'
 
        .GetRecurrencePattern.NoEndDate True 'jedes Jahr' 

Unterhalb der Zeile

PHP-Code:
.ReminderPlaySound True 
einfügen.

Könnte man(n) auch wunderbar googlen ... 'VBA Serientermin aus Excel in Outlook'
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
[-] Folgende(r) 1 Nutzer sagt Danke an Flotter Feger für diesen Beitrag:
  • sharky51
Antworten Top
#4
Hallo Sabina,

vielen Dank für Deinen Vorschlag. Mit dem googeln ist das so eine Sache - man sieht den Wald vor lauter Bäumen nicht.
Aber Spaß beiseite.

Habe Deinen Vorschlag so umgesetzt wie beschrieben- aber leider werden die Serientermine zeitlich nicht begrenzt - selbst wenn ich Interval = 1 angebe läuft der Termin weiter.
Die Interval-Angabe wird irgendwie ignoriert!?

Hast Du ev. noch ne Idee an was das liegt? Mein Google-Finger ist schon wund  Idea
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#5
Hallo,

... zeitlich begrenzt ? Keine Ahnung was du damit meinst !

Aber vielleicht wäre es sinnvoll, diese Frage in einem Outlook-Forum zu stellen ?

Die Helfer da, kennen sich in ihrem Element sicher besser aus, als eine junge Dame, die noch nicht mal Outlook verwendet.
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
[-] Folgende(r) 1 Nutzer sagt Danke an Flotter Feger für diesen Beitrag:
  • sharky51
Antworten Top
#6
Hallo Sabina,

mit zeitlich begrenzt meine ich, dass ein Serientermin nicht bis ins Unendliche läuft.

Beispiel:
Ein Besprechungstermin soll ab einem Start-Datum bis zu einem definierten Enddatum stattfinden. Immer am gleichen Wochentag und immer zur gleichen Uhrzeit und mit der gleichen Zeitdauer.

Na ja ich bin halt in diesem Excel-Forum weil es a) super kompetent ist und b) ich halt aus Excel heraus die Termine steuern möchte.
Aber wenn ich nicht weiterkomme sollte ich Deinen Outlook-Vorschlag mal annehmen.

Aber vielleicht hat die junge Dame trotzdem noch eine Idee die einem älteren Herrn helfen könnte  Confused
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#7
Hallo alter Mann,

... ich habe mal 2 Minuten lang für dich gegoogled ...

http://www.herber.de/forum/archiv/1492to...ellen.html
http://www.outlookcode.com/threads_print.aspx?forumid=2&messageid=28497 'Löschen des Ganzen ... falls nötig'
https://www.slipstick.com/office-365/imp...-calendar/


... und dann mal nachgedacht ...

PHP-Code:
        .GetRecurrencePattern.RecurrenceType olRecursWeekly 'wöchentlich'
 
        .GetRecurrencePattern.PatternStartDate "Hier das Startdatum angeben."
 
        .GetRecurrencePattern.Interval 'einmalig'
 
        .GetRecurrencePattern.NoEndDate False 'das endet auch mal'
 
        .GetRecurrencePattern.PatternEndDate "Hier das Enddatum angeben." 
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
[-] Folgende(r) 1 Nutzer sagt Danke an Flotter Feger für diesen Beitrag:
  • sharky51
Antworten Top
#8
Hallo Sabina,

vielen Dank für die Links - werde sie mal durcharbeiten.

Habe in der Zwischenzeit auch mal weiter geforscht - mit diesem Ergebnis für eine begrenzte Wiederholdauer von Wochen-Terminen.

Kleiner Code-Ausschnitt:
Code:
...........
   .Location = Cells(row, 2).Value
           .Start = Cells(row, 3).Value + Cells(row, 5).Value
           .End = Cells(row, 4).Value + Cells(row, 6).Value
           
           '.Resources = Cells(2, 10).Value
           .ReminderMinutesBeforeStart = 720
           'mit Sound
           .ReminderPlaySound = True
           
           'Farbkennzeichnung des Termins
           .Categories = Cells(row, 9).Value  'z.B. "Grüne Kategorie"
           
           'Raster für Wiederholungen
           Set OutPattern = apptOutApp.GetRecurrencePattern
           
           Trepeat = Cells(row, 8).Value
           Select Case Trepeat
               Case Is = "Jahr"
                   OutPattern.RecurrenceType = olRecursYearly      'wiederkehrender Termin
                   .Subject = "Geburtstag von:" & Cells(row, 12).Value & " (Wird " & Cells(row, 13).Value & " Jahre alt.)"
               Case Is = "Monat"
                   OutPattern.RecurrenceType = olRecursMonthly     'wiederkehrender Termin
               Case Is = "Woche"
                   OutPattern.RecurrenceType = olRecursWeekly      'wiederkehrender Termin
                   OutPattern.DayOfWeekMask = olTuesday            'Wochentag
                   OutPattern.Occurrences = 31                      'x Wiederholungen
                   '.GetRecurrencePattern.NoEndDate = True 'jedes Jahr'
               Case Else
                   MsgBox "Einige Termine wurden nicht angelegt!"
                   GoTo Weiter
           End Select
   ............

Eine Begrenzung der Laufzeit für Jahres-Termine habe ich leider noch nicht geschafft. Ich vermute das funktioniert nicht.

Vielen Dank für Deine Hilfe.
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#9
Hallo,


PHP-Code:
outPattern.Recurencetype 'olRecurenceYearly'
.GetRecurrencePattern.NoEndDate False
OutPattern
.Occurences 

Das erzeugt ein Ende der Serie nach 3 Jahren ... die Abfolge der Befehle ist wichtig !!!
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
[-] Folgende(r) 1 Nutzer sagt Danke an Flotter Feger für diesen Beitrag:
  • sharky51
Antworten Top
#10
Hallo Sabina,

super herzlichen Dank!
Mit dieser Info funktioniert das Ganze jetzt perfekt.

Hast einem alten Mann sehr geholfen!

Vielen Dank und hab noch einen schönen Abend.
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste