chris1312
Goto Top

Outlook 2013 - Kontakte löschen - schützen

Servus und hallo an alle,

ich habe mal eine völlig bescheuerte Frage aber ich glaube einige haben das gleiche Problem.
Ich suche nach einer Lösung Kontakte in Outlook 2013 vor dem Löschen mit der "ENTF-Taste" zu schützen.

Meine Vorstellung ist:
Entf-Taste Drücken und dann kommt nur bei den Kontakten die Frage: "Wollen Sie den Kontakt wirklich löschen?"....

Die Lösung mit "Shift + ENTF" ist mir bereits bekannt aber die ist nicht mein Ziel weil wenn sowas passiert der
Anwender auf die "ENTF" Taste drückt. Ich bin hier auf jeden Fall über jeden Tipp dankbar.

Der Haken ist bereits gesetzt:
"Datei / Optionen / Erweitert / (unter Weitere) ganz unten ist bereits der Haken gesetzt *Zur Bestätigung auffordern, bevor Elemente endgültig gelöscht werden*"

Gruß Chris

Content-ID: 240498

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

Ausgedruckt am: 19.11.2024 um 05:11 Uhr

colinardo
Lösung colinardo 10.06.2014 aktualisiert um 21:38:57 Uhr
Goto Top
Hallo Chris,
Entf-Taste Drücken und dann kommt nur bei den Kontakten die Frage: "Wollen Sie den Kontakt wirklich löschen?"....
mit VBA hätte ich da eine Lösung für Outlook:
ALT-F11 drücken und den folgenden Code in den VBA-Editor unter ThisOutlookSession oder DieseOutlookSitzung einfügen (zur Info: Makros müssen im Sicherheitscenter von Outlook aktiviert sein). Dann auf Speichern klicken, Outlook neu starten und über eine Sicherheitsabfrage vor dem Löschen von Kontakten freuen face-wink
Dim WithEvents ol_ContactItem As ContactItem
Dim WithEvents ol_Explorer As Explorer

Private Sub Application_Startup()
    Set ol_Explorer = ActiveExplorer
End Sub

Private Sub ol_ContactItem_BeforeDelete(ByVal Item As Object, Cancel As Boolean)
    If MsgBox("Möchten sie diesen Kontakt wirklich löschen?", vbYesNo Or vbQuestion) = vbNo Then  
        Cancel = True
    End If
End Sub

Private Sub ol_Explorer_SelectionChange()
    If ol_Explorer.Selection.Count > 0 Then
        If ol_Explorer.Selection.Item(1).Class = olContact Then
            Set ol_ContactItem = ol_Explorer.Selection.Item(1)
        End If
    End If
End Sub
Grüße Uwe
Chris1312
Chris1312 10.06.2014 um 21:38:15 Uhr
Goto Top
Uwe!

Du bist mein Retter!
Soeben getestet und es funktioniert...

Vielen Dank an dich Uwe!

Gruß Chris
Frank67
Frank67 24.07.2016 um 19:50:43 Uhr
Goto Top
Hallo Uwe,
coole Lösung Ich verwende den Ansatz auch für Mails...
Leider kommt die Abfrage nur beim Löschen aus der geöfnetten Mail.
Bei Kontakten funktioniert es aus dem geöffneten Kontakt und aus der Liste.
Wo ist der Unterschied, was mache ich falsch?


Option Explicit
Dim WithEvents ol_MailItem As MailItem
Dim WithEvents ol_ContactItem As ContactItem
Dim WithEvents MyExplorer As Explorer

Private Sub Application_Startup()
Set MyExplorer = ActiveExplorer
End Sub

Private Sub MyExplorer_SelectionChange()
If MyExplorer.Selection.count > 0 Then
Select Case MyExplorer.Selection.Item(1).Class
Case olMail
Set ol_MailItem = MyExplorer.Selection.Item(1)
Case olContact
Set ol_ContactItem = MyExplorer.Selection.Item(1)
End Select
End If
End Sub

Private Sub ol_MailItem_BeforeDelete(ByVal Item As Object, Cancel As Boolean)
If MsgBox("Mail wirklich löschen?", vbYesNo Or vbQuestion) = vbNo Then Cancel = True
End Sub

Private Sub ol_ContactItem_BeforeDelete(ByVal Item As Object, Cancel As Boolean)
If MsgBox("Kontakt wirklich löschen?", vbYesNo Or vbQuestion) = vbNo Then Cancel = True
End Sub
colinardo
colinardo 26.07.2016 aktualisiert um 13:39:11 Uhr
Goto Top
Hallo @Frank67, Willkommen auf Administrator.de!
Das ist meiner Meinung nach ein Timing-Problem (Bug). Besser du machst das folgendermaßen dann gilt das für alle Objekte die gelöscht werden gleichermaßen:
Dim WithEvents ol_Explorer As Explorer
Dim WithEvents ol_Folder As Folder

Private Sub Application_Startup()
    Set ol_Explorer = ActiveExplorer
End Sub

Private Sub ol_ContactItem_BeforeDelete(ByVal Item As Object, Cancel As Boolean)
    If MsgBox("Möchten sie diesen Kontakt wirklich löschen?", vbYesNo Or vbQuestion) = vbNo Then  
        Cancel = True
    End If
End Sub

Private Sub ol_Explorer_FolderSwitch()
    If Not ol_Explorer.CurrentFolder Is Nothing Then
        Set ol_Folder = ol_Explorer.CurrentFolder
    End If
End Sub

Private Sub ol_Folder_BeforeItemMove(ByVal Item As Object, ByVal MoveTo As MAPIFolder, Cancel As Boolean)
    If Not MoveTo Is Nothing Then
        If MoveTo = ol_Explorer.Session.GetDefaultFolder(olFolderDeletedItems) Then
            If MsgBox("Möchten sie dieses Element wirklich löschen?", vbYesNo Or vbQuestion) = vbNo Then  
                Cancel = True
            End If
        End If
    End If
End Sub
Grüße Uwe

p.s. für die Zukunft erstelle eine neue Frage oder melde dich bei der Person per PM. Das "Übernehmen" von Threads anderer Threadersteller sehen wir hier eigentlich nicht so gerne. Merci.
Frank67
Frank67 26.07.2016 um 17:34:42 Uhr
Goto Top
Hallo Uwe,
funktioniert einwandfrei.

Vielen Dank.
Frank