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

Ausgedruckt am: 29.03.2024 um 06:03 Uhr

Mitglied: colinardo
colinardo 12.07.2018 aktualisiert um 08:31:06 Uhr
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
Mitglied: emeriks
emeriks 12.07.2018 aktualisiert um 08:34:20 Uhr
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 ...
Mitglied: Richard4697
Richard4697 12.07.2018 um 09:06:46 Uhr
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.
Mitglied: colinardo
colinardo 12.07.2018 aktualisiert um 20:23:04 Uhr
Goto Top
Lüppt hier einwandfrei, vermutlich wieder Missverständnis im Thread oder die Spalten für Ganztagstermine etc. falsch formatiert?!
Mitglied: colinardo
colinardo 12.07.2018 um 14:07:40 Uhr
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
Mitglied: Richard4697
Richard4697 16.07.2018 um 13:55:58 Uhr
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
Mitglied: emeriks
emeriks 16.07.2018 um 14:06:27 Uhr
Goto Top
Vielleicht mal damit beschäftigen und lesen?
AppointmentItem Object (Outlook)
Mitglied: Richard4697
Richard4697 16.07.2018 um 14:08:04 Uhr
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
Mitglied: colinardo
colinardo 16.07.2018 aktualisiert um 14:42:50 Uhr
Goto Top
Alles ist möglich, Sonderwünsche gerne als kostenpflichtiger Auftrag. => PN.
Mitglied: Richard4697
Richard4697 06.08.2018 um 12:08:13 Uhr
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
Mitglied: colinardo
Lösung colinardo 06.08.2018 aktualisiert um 12:54:03 Uhr
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.
Mitglied: Richard4697
Richard4697 06.08.2018 um 13:04:15 Uhr
Goto Top
Super danke.