Termine im Kalender löschen

Moderator: ModerationP

Termine im Kalender löschen

Beitragvon Guybrush junior » 07. Jan 2018, 14:53

Hallo,
ich schreibe mir "Dummy-Termine" auf den Samstag aktuelle Woche. Das sind noch nicht vereinbarte Termin und die kann ich dann einfach verlegen wenn ich das vereinbart habe. Mit der Routine unten lösche ich die alten Dummy-Termine. Es bleiben ja auch immer Termine weg und es kommen neue hinzu.
Das löschen der Termin dauert mittlerweile sehr lange. da die Dummy-Termin Zeitraum technisch nicht länger als 2 Wochen zurück gelöscht werden müssen, könnte das in den Code mit eingebaut weren. Kann mir da einer bei helfen ?
Code: Alles auswählen
Private Sub delTermin()
' nur die Dummy Termin löschen
 
Dim myOlApp As Outlook.Application
Dim myNameSpace As NameSpace
Dim myFolder As Object
Dim i As Integer
Dim xObject As String
Dim aItm As AppointmentItem
 
Set myOlApp = CreateObject("Outlook.Application")
Set myNameSpace = myOlApp.GetNamespace("MAPI")
Set myFolder = myNameSpace.GetDefaultFolder(olFolderCalendar)

For i = myFolder.Items.Count To 1 Step -1

Set aItm = myFolder.Items(i)
xObject = aItm.Subject
If aItm.Categories = "DummyAuftrag" Then aItm.Delete

Next i

End Sub
Wenn isch immer des mache ded was die onern wolle, kennt isch moin Kopp in die Rachkammer hänge. (Offizieller Sponsor der Bundesrepublik Deutschland)
Benutzeravatar
Guybrush junior
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 583
Registriert: 19. Feb 2005, 14:30

Re: Termine im Kalender löschen

Beitragvon Michael Bauer » 08. Jan 2018, 08:13

Hallo,
dies gibt Dir alle Termine eines bestimmten Tages:
http://www.vboffice.net/de/developers/anzahl-der-termine-eines-tages-ermitteln
Michael Bauer
Add-Ins für Microsoft Outlook
Benutzeravatar
Michael Bauer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 6338
Registriert: 03. Feb 2005, 15:07
Wohnort: Vollersode

Re: Termine im Kalender löschen

Beitragvon Guybrush junior » 18. Jan 2018, 21:45

Hallo,

ich bekomme das einfach net hin. Bitte um weitere Hilfe.
Ich will alle Termine eines bestimmten Tages aus dem Outlook Kalender löschen. Der Tag wird durch gesTag vorgegeben.

Code: Alles auswählen
 Dim oItems As Outlook.Items
 Dim sFind As String
 Dim obj As Object
 Dim i As Long
 Dim gesTag As Date

Set myOlApp = CreateObject("Outlook.Application")
Set myNameSpace = myOlApp.GetNamespace("MAPI")
Set myFolder = myNameSpace.GetDefaultFolder(olFolderCalendar)

  Set oItems = myFolder.Items

  oItems.sort "[Start]", False
  oItems.IncludeRecurrences = True

gesTag = DLast("letztes_Datum", "tbl_OutlookTermine_Datum")

  sFind = Format(gesTag, "ddddd")

  sFind = "[Start] <= " & _
            Chr(34) & sFind & " 11:59 PM" & Chr(34) & _
            " AND [End] > " & _
            Chr(34) & sFind & " 12:00 AM" & Chr(34)
           
  Set oResult = oItems.Restrict(sFind)
  For Each obj In oResult
    i = i + 1
    Debug.Print i
 ' Debug.Print oResult.Restrict.Categories(i)
  Next
 
For i = oResult.oItems.Count To 1 Step -1

Set aItm = oResult.Items(i)
xObject = oResult.Subject
Debug.Print oResult.Categories
If oResult.Categories = "DummyAuftrag" Then oResult.Delete

Next i
End Sub
Wenn isch immer des mache ded was die onern wolle, kennt isch moin Kopp in die Rachkammer hänge. (Offizieller Sponsor der Bundesrepublik Deutschland)
Benutzeravatar
Guybrush junior
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 583
Registriert: 19. Feb 2005, 14:30

Re: Termine im Kalender löschen

Beitragvon Michael Bauer » 19. Jan 2018, 07:28

Du mußt mitteilen, was nicht geht. Gibt es eine Fehlermeldung oder liefert Restrict vielleicht die falschen Termine?
Michael Bauer
Add-Ins für Microsoft Outlook
Benutzeravatar
Michael Bauer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 6338
Registriert: 03. Feb 2005, 15:07
Wohnort: Vollersode

Re: Termine im Kalender löschen

Beitragvon Guybrush junior » 19. Jan 2018, 13:14

hallo
in der Zeile
Code: Alles auswählen
For i = oResult.oItems.Count To 1 Step -1

hängt das mit der Fehlermeldung "Objekt unterstützt diese Eigenschaft oder Methode nicht"

direkt oben drüber steht ja:
Code: Alles auswählen
For Each obj In oResult
    i = i + 1
    Debug.Print i
 ' Debug.Print oResult.Restrict.Categories(i)
  Next

und im direktfenster werden von 1 bis 10 zahlen ausgegeben, was darauf hin weist, dass die 10 einträge dieses Tages wohl korrekt gescannt werden.
Ich komm da aber net weiter weil ich die syntax net kenne um dann die 10 Einträge auch per lösch Befehl zu löschen.

damit wollte ich statt der Zahlen was von den Terminen im direktfenster ausgeben lassen als kontrolle, dass die Termine korrekt gescannt werden. geht aber auch net.
Code: Alles auswählen
' Debug.Print oResult.Restrict.Categories(i)

Fehlermeldung hier: Argument ist nicht optional

Vielen Dank für die Hilfe.
Wenn isch immer des mache ded was die onern wolle, kennt isch moin Kopp in die Rachkammer hänge. (Offizieller Sponsor der Bundesrepublik Deutschland)
Benutzeravatar
Guybrush junior
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 583
Registriert: 19. Feb 2005, 14:30

Re: Termine im Kalender löschen

Beitragvon mmarkus » 19. Jan 2018, 14:16

Code: Alles auswählen
For i = oResult.oItems.Count To 1 Step -1


oResult ist eine Varialbe des Typs Items.
Die Fehlermeldung sagt eigentlich eh alles.
Du müsstest nur in die Hilfe schauen. Aber auch wenn man es nicht weiß, würde die Intellisence das schon anzeigen, wie es richtig gehört.

es müsste also heißen
Code: Alles auswählen
For i = oResult.Count To 1 Step -1


Wenn man den debugger benutzt sieht man doch, dass der Code voller Fehler ist.
Du musst dich zuerst mit den Grundlagen auseinandersetzen, sonst kannst du nur code kopieren, bringst aber nicht mal eine Kopie zum Laufen.
ms access what else
mmarkus
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1053
Registriert: 16. Apr 2012, 16:07
Wohnort: Vienna

Re: Termine im Kalender löschen

Beitragvon Guybrush junior » 20. Jan 2018, 18:19

falls sich einer mal hier her verirrt, hier die Lösung:

Code: Alles auswählen
Private Sub delTermin()

Dim myNamespace As Outlook.NameSpace
Dim myFolder As Outlook.Folder
Dim myItems As Outlook.Items
Dim myRestrictItems As Outlook.Items

Set myOlApp = CreateObject("Outlook.Application")
Set myNamespace = myOlApp.GetNamespace("MAPI")
Set myFolder = myNamespace.GetDefaultFolder(olFolderCalendar)
Set myItems = myFolder.Items

gesTag = DLast("letztes_Datum", "tbl_OutlookTermine_Datum")

  sFind = Format(gesTag, "ddddd")

  sFind = "[Start] <= " & Chr(34) & sFind & " 11:59 PM" & Chr(34) & _
            " AND [End] > " & Chr(34) & sFind & " 12:00 AM" & Chr(34)

 Set myRestrictItems = myItems.Restrict(sFind)


For i = myRestrictItems.Count To 1 Step -1
myRestrictItems.Item(i).Delete
Next

End Sub
Wenn isch immer des mache ded was die onern wolle, kennt isch moin Kopp in die Rachkammer hänge. (Offizieller Sponsor der Bundesrepublik Deutschland)
Benutzeravatar
Guybrush junior
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 583
Registriert: 19. Feb 2005, 14:30


Zurück zu Outlook Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste