richard4697
Goto Top

Termine von Excel an Outlook senden

Liebe Experten,

ich bitte um Unterstützung. Ich möchte Termine die in einem Excelsheet stehen per Makro an einem definierten Kalender senden. Dabei soll überprüft werden ob dieser Termin schon existiert und ggf nur die Änderungen (keine Duplikate) speichern. Es sollen ganze Tage und kurze Termine möglich sein.

Folgendes habe ich schon auf eurer Seite gefunden. Das funktioniert auch sehr gut, jedoch das mit den Duplikaten hab ich nicht umsetzen können. Bitte um Unterstützung ich bin kein Profi!! DANKE

Sub createAppointments()
On Error Resume Next
Dim sheet As Worksheet, rngStart As Range, rngEnd As Range, cell As Range
Set objOL = CreateObject("Outlook.Application")
Set objCal = objOL.Session.GetDefaultFolder(9).Folders("Werbekalender")
Set sheet = Worksheets(1)
Set rngStart = sheet.Range("A2")
Set rngEnd = rngStart.End(xlDown)
counter = 0
For Each cell In sheet.Range(rngStart, rngEnd)
Set olApp = objCal.items.Add(1)
With olApp
strSubject = cell.Text
strStartDate = cell.Offset(0, 1).Text
strStartTime = cell.Offset(0, 2).Text
strEndDate = cell.Offset(0, 3).Text
strEndTime = cell.Offset(0, 4).Text
boolAllDay = cell.Offset(0, 5).Value
strCategory = cell.Offset(0, 6).Text


.Subject = strSubject
.ReminderSet = False
If strCategory <> "" Then
.Categories = strCategory
End If
If boolAllDay = True Then
.AllDayEvent = True
If IsDate(strStartDate) Then
.Start = DateValue(strStartDate)
.End = DateAdd("d", 1, DateValue(strStartDate))
.Save
counter = counter + 1
Else
MsgBox "Termin mit dem Betreff: '" & strSubject & "' in Zeile " & cell.Row & " hat ungültige oder fehlende Zeitangaben", vbExclamation
End If
Else
.AllDayEvent = False
If IsDate(strStartDate) And IsDate(strEndDate) And IsDate(strStartTime) And IsDate(strEndTime) Then
.Start = DateValue(strStartDate) & " " & TimeValue(strStartTime)
.End = DateValue(strEndDate) & " " & TimeValue(strEndTime)
.Save
counter = counter + 1
Else
MsgBox "Termin mit dem Betreff: '" & strSubject & "' in Zeile " & cell.Row & " hat ungültige oder fehlende Zeitangaben", vbExclamation
End If
End If
End With
Next
Set objOL = Nothing
MsgBox counter & " Termin(e) wurden erstellt!", vbInformation
End Sub

Content-Key: 379914

Url: https://administrator.de/contentid/379914

Printed on: April 25, 2024 at 18:04 o'clock

Member: colinardo
colinardo Jul 12, 2018 updated at 06:31:06 (UTC)
Goto Top
Servus,
im Thread etwas weiter unten wo du den Code her hast, hättest du auch dafür die Lösung gefunden ...
Mit Excel einen Termin in Outlook erzeugen

G. @colinardo
Member: emeriks
emeriks Jul 12, 2018 updated at 06:34:20 (UTC)
Goto Top
Hi,
als erstes: Benutze bitte Code-Tags! So kann man das kaum lesen.
Dann bitte auch die einzelnen Blöcke einrücken. Also z.B. aus
If blablabla then
tu was
tu was
tu was
end if
mache
If blablabla then
  tu was
  tu was
  tu was
end if
Das Gleiche mit "For...Next", "With....End With", "Sub ...End Sub" usw.
Verschachtelte Blöcke blockweise einrücken.

E.

Edit:
Sowas gibt es im Web schon zu finden:
Hier z.B.
http://www.vbaexpress.com/forum/showthread.php?54898-Create-Outlook-201 ...
Member: Richard4697
Richard4697 Jul 12, 2018 at 07:06:46 (UTC)
Goto Top
Das hab ich mir schon gelesen und auch probiert, aber es funktioniert bei mir einfach nicht. Wenn ich einen Termin ein 2. sende kommt ein Duplikat dazu, auch wenn sich beim Termin nichts geändert hat.
Member: colinardo
colinardo Jul 12, 2018 updated at 18:23:04 (UTC)
Goto Top
Lüppt hier einwandfrei, vermutlich wieder Missverständnis im Thread oder die Spalten für Ganztagstermine etc. falsch formatiert?!
Member: colinardo
colinardo Jul 12, 2018 at 12:07:40 (UTC)
Goto Top
So für dich und die anderen die hier vorbei schauen habe ich das ganze noch etwas vereinfacht. Ich denke das du den Thread zu den Duplikaten einfach missinterpretiert hattest, den die Duplikats-suche war ja mit gewissen Einschränkungen (Zeit,Subject) versehen die du vermutlich übersehen hast.

Mit der zus. Version wird nun eine Zuordnung anhand der EntryID der Termine vorgenommen

Download des Demo-Sheets im Ursprungsbeitrag hier:
Mit Excel einen Termin in Outlook erzeugen
Member: Richard4697
Richard4697 Jul 16, 2018 at 11:55:58 (UTC)
Goto Top
Das ist perfekt. DANKE vielmals. Was muß ich jetzt noch machen um den Ganztagestermin statt Frei auf Beschäftigt ändern kann. Beim Termin der 2 Stunden dauert, wurde "Beschäftigt" eingetragen.

LG RIchard
Member: emeriks
emeriks Jul 16, 2018 at 12:06:27 (UTC)
Goto Top
Vielleicht mal damit beschäftigen und lesen?
AppointmentItem Object (Outlook)
Member: Richard4697
Richard4697 Jul 16, 2018 at 12:08:04 (UTC)
Goto Top
Sorry das ich nochmals Nachfrage, aber jetzt hab ich extrem Spaß an diesem Thema gefunden. Ist es möglich einen Termin auch an Kollegen oder externe Personen als Einladung zusenden kann? Ich würde hier eine Spalte mit der E-Mailadresse machen wollen!

LG Richard
Member: colinardo
colinardo Jul 16, 2018 updated at 12:42:50 (UTC)
Goto Top
Alles ist möglich, Sonderwünsche gerne als kostenpflichtiger Auftrag. => PN.
Member: Richard4697
Richard4697 Aug 06, 2018 at 10:08:13 (UTC)
Goto Top
Hi Zusammen,

ich hätte noch eine kleine Frage, wenn ich einen Autofilter setze werden Termine bis zum gefilterten Wert an Outlook übertragen. Wie können nur die gefilterten Termine übertragen werden?

Danke im Voraus für eure Hilfe Richy
Member: colinardo
Solution colinardo Aug 06, 2018 updated at 10:54:03 (UTC)
Goto Top
Zitat von @Richard4697:
ich hätte noch eine kleine Frage, wenn ich einen Autofilter setze werden Termine bis zum gefilterten Wert an Outlook übertragen. Wie können nur die gefilterten Termine übertragen werden?
Mit AutoFilter kannst du es jetzt auch nutzen, kleine Anpassung im oben verlinkten Sheet ist mit eingebaut (ein Anhängen von .SpecialCells(xlCellTypeVisible) an den Range der Schleife reichte da aus).

Grüße Uwe
Danke im Voraus für eure Hilfe Richy
Danke sagen darfst du immer hier face-smile

Und bitte dann den Beitrag auch noch auf gelöst setzen, und Lösungen markieren. Merci.
Member: Richard4697
Richard4697 Aug 06, 2018 at 11:04:15 (UTC)
Goto Top
Super danke.