Opgelost Hoe verwijder ik een e-mail met VBA?

Dit topic is als opgelost gemarkeerd
Status
Niet open voor verdere reacties.

keb

Gebruiker
Lid geworden
20 feb 2011
Berichten
133
Ik wil e-mails selecteren om deze naar mijn projectdossiers te verplaatsen.
Het opslaan van de e-mail)s) gaat goed, maar het lukt mij niet om ze daarna te verwijderen.

Code:
'status per 16 december 2023
Private Sub Commandbutton1_Click()
'Ref.: https://www.slipstick.com/developer/code-samples/save-selected-message-file/

    Dim myItem As Object
    Dim olMail As Outlook.MailItem
    Dim Selection As Selection
    
    Dim strSender As String
    Dim strDate As String
    Dim strPath As String
    Dim strSubject As String 'will be shortened to fix number of characters
    Dim sName As String
    Dim sChr As String
    
    strPath = ListBox2.List(ListBox2.ListIndex, 1)
    'MsgBox strPath
    'Action with loop for all selected e-mails
  
    Set myNamespace = Application.GetNamespace("MAPI")
    Set Selection = Application.ActiveExplorer.Selection
    For Each objItem In ActiveExplorer.Selection
        If objItem.MessageClass = "IPM.Note" Then
            Set oMail = objItem
            
            strSubject = oMail.Subject
            ReplaceCharsForFileName strSubject, "-"
            strSubject = Left(strSubject, 20)  'limit the lenght of sth subject
            
            strSender = oMail.Sendername
            ReplaceCharsForFileName strSender, "-"
            'strSender = Left(strSender & String(20, "_"), 20) 'was intented for outlining messages
            strSender = Left(strSender, 20)
            
            dtDate = oMail.ReceivedTime
            strDate = Format(dtDate, "yyyymmdd", vbUseSystemDayOfWeek, vbUseSystem) & Format(dtDate, "-hhnn", vbUseSystemDayOfWeek, vbUseSystem)
                                  
            'Debug.Print strPath & strDate & " «" & strSender & "» " & strSubject & ".msg"
            oMail.SaveAs strPath & strDate & " «" & strSender & "» " & strSubject & ".msg", olMSG
            End If
      
        'Delete the selected e-mail
        'objItem.Delete   'Outlook kan het item niet verwijderen
        'oMail.Delete     'Outlook kan het item niet verwijderen
        'MailItem.Delete  'Object vereist
        
        Next  'Next mail
        
        Userform1.hide
        
End Sub

'===========================================================================
'strSubject and strSender must be checked
Public Sub ReplaceCharsForFileName(sName As String, sChr As String)
  sName = Replace(sName, "'", sChr)
  sName = Replace(sName, "*", sChr)
  sName = Replace(sName, "/", sChr)
  sName = Replace(sName, "\", sChr)
  sName = Replace(sName, ":", sChr)
  sName = Replace(sName, "?", sChr)
  sName = Replace(sName, Chr(34), sChr)
  sName = Replace(sName, "<", sChr)
  sName = Replace(sName, ">", sChr)
  sName = Replace(sName, "|", sChr)
  sName = Replace(sName, "&", sChr)
End Sub

'===========================================================================
Private Sub UserForm_Initialize()
    'Read setup file/parameters for dropbox
    file = "D:\Setup.csv"
    i = 0
    Userform1.ListBox2.Clear
    Open file For Input As #1
    Do Until EOF(1)
        Line Input #1, strLine: 'Debug.Print strLine
        i = i + 1
        ListBox2.AddItem
        ListBox2.List(i - 1, 0) = Split(strLine, ";")(0)
        ListBox2.List(i - 1, 1) = Split(strLine, ";")(1)
    Loop
    Close #1
End Sub

Met een icoontje in de menubalk roep ik de macro aan, selecteer de e-mail(s), selecteer het project en druk vervolgens op "Verplaats de e-mails".
 

Bijlagen

  • Userform.jpg
    Userform.jpg
    13,8 KB · Weergaven: 2
Oplossing gevonden in https://forums.slipstick.com/threads/96078-vba-code-to-permanently-delete-selected-email/
Kort gezegd: een te verwijderen e-mail moet je eerst verplaatsen naar de map "verwijderde mails"; vervolgens verwijder je de gemarkeerde mail uit de map "vewijderde mails".

De volgende code toegevoegd:
Code:
objItem.Categories = "DeleteMe"   'Mark the mail "DeleteMe"
objItem.Move DeletedFolder
en
Code:
'Clear all e-mails in the map "Verwijderde e-mails" which are marked "DeleteMe"
For Each objItem In DeletedFolder.Items
       If objItem.Categories = "DeleteMe" Then objItem.Delete
       Next
 
oei en bij SNB was het zoiets, maar met die c00 moest je nog even stoeien, want je had ook niet gezegd welke je wilde verwijderen
CSS:
Sub email_ontvangen_verwijderen()
c00 = "controle"

CreateObject("Outlook.Application").GetNamespace("MAPI").GetDefaultFolder(6).Items(c00).Delete
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan