Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [VB6] Svuotare la cartella "Posta eliminata" di Outlook

    Salve a tutti.
    Non riesco a trovare il modo di eliminare tutti gli elementi e cartelle contenute nella cartella "Posta eliminata" di Outlook.
    Sapete suggerirmi come fare?

    Io ho scritto una cosa del genere, ma sto cambiando in continuazione perchè mi si genera sempre qualche errore:
    codice:
    Dim mioCestino As Outlook.MAPIFolder
    
    Set mioCestino = mioSpace.GetDefaultFolder(olFolderDeletedItems)
    For i = 1 To mioCestino.Items.Count
        mioCestino.Items.Remove(i)
    Next i
    For i = 1 To mioCestino.Folders.Count
        mioCestino.Folders.Remove(i)
    Next i
    purtroppo non va... mi genera questo errore:
    "Errore n. -1593819131: Indice della matrice fuori intervallo."

    sulla riga in rosso. ma le cartelle eliminate sono 84.
    Help me please...


    Grazie a tutti per la collaborazione

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  2. #2
    ho temporaneamente risolto in questo modo:
    codice:
    EliminaCartelle:
      codErr = "§26"
      Set myFolders = mioCestino.Folders
      numCart = myFolders.Count
      For i = 1 To myFolders.Count
           myFolders.Remove (i)
      Next i
    
    Esci:
      Exit Sub
        
    Errore:
      If codErr = "§26" Then
         If numCart > 0 Then
                Resume EliminaCartelle
            Else
                Screen.MousePointer = 0
          End If
        Else
          MsgBox "Errore n. " & Err.Number & ": " & Err.Description
      End If
    Intercettandto l'errore e rimandando il programma sul "Set myFolders...", risettando quindi gli indici a zero, l'eliminazione viene eseguita senza errori "visibili".
    E' una soluzione orribile, ma per ora ho trovato questo.

    Ragazzi aiutatemi a trovare una cosa più bella e funzionale...:master:

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  3. #3
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    esiste l'oggetto FOLDER?

    se esiste puoi fare:
    codice:
    Dim rFolder as FOLDER
    For Each rFolder in mioCestino.Folders
      rFolder.Remove
    Next
    al limite prova con Object generico e questo codice:
    codice:
    Dim rFolder as Object
    for each rFolder in mioCestino.Folders
       if typeOf rFolder is mioCestino.Folders.Item
           ctype(rFolder, mioCestino.Folder.item).remove
       End If
    next
    anche se non credo funzioni perchè Item dovrebbe essere una propietà e non un oggetto

  4. #4
    Originariamente inviato da darkblOOd
    esiste l'oggetto FOLDER?

    se esiste puoi fare:
    codice:
    Dim rFolder as FOLDER
    For Each rFolder in mioCestino.Folders
      rFolder.Remove
    Next
    al limite prova con Object generico e questo codice:
    codice:
    Dim rFolder as Object
    for each rFolder in mioCestino.Folders
       if typeOf rFolder is mioCestino.Folders.Item
           ctype(rFolder, mioCestino.Folder.item).remove
       End If
    next
    anche se non credo funzioni perchè Item dovrebbe essere una propietà e non un oggetto
    sto provando col primo esempio :incrociamoledita:

    il secondo non funziona sicuramente perchè l'oggetto Item della cartella è diverso dall'oggetto Folder.

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  5. #5
    allora, dark, ho utilizzato il primo codice:
    codice:
    Dim rFolder as FOLDER
    For Each rFolder in mioCestino.Folders
      rFolder.Remove
    Next
    ma non va. in effetti mi sono un po' rimbambita, perchè già avevo visto ieri che utilizzando la parolina Each arrivata a un tot di cartelle esce dal ciclo for senza finire...
    infatti io ora ho 30 cartelle in Posta Eliminata... quando arriva alla 10ma esce. ed è per questo che avevo deciso di usare l'indice della cartella scorrendo l'insieme Folders.

    insomma non so come cavolo risolvere. esisterà il comando "Svuota Cartella Posta Eliminata" no?!

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  6. #6
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    Originariamente inviato da ladyBlu
    allora, dark, ho utilizzato il primo codice:
    codice:
    Dim rFolder as FOLDER
    For Each rFolder in mioCestino.Folders
      rFolder.Remove
    Next
    ma non va. in effetti mi sono un po' rimbambita, perchè già avevo visto ieri che utilizzando la parolina Each arrivata a un tot di cartelle esce dal ciclo for senza finire...
    infatti io ora ho 30 cartelle in Posta Eliminata... quando arriva alla 10ma esce. ed è per questo che avevo deciso di usare l'indice della cartella scorrendo l'insieme Folders.
    uhm...ma per caso ogni cartella presente nell'insieme può avere sottocartelle?

    Il for each cicla all'interno della collection mioCestino.Folders ed esegue la delete per ogni oggetto trovato al suo interno. Ovviamente per ogni oggetto DEL TIPO specificato nella dim. potrebbe essere che le altre cartelle sono di un altro tipo....

    insomma non so come cavolo risolvere. esisterà il comando "Svuota Cartella Posta Eliminata" no?!

    evidentemente no

  7. #7
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    ah.ehm...e se provi così va in errore lo stesso?

    codice:
    Dim mioCestino As Outlook.MAPIFolder
    Set mioCestino = mioSpace.GetDefaultFolder(olFolderDeletedItems)
    For i = 0 To mioCestino.Items.Count -1
        mioCestino.Items.Remove(i)
    Next i

  8. #8
    Originariamente inviato da darkblOOd
    uhm...ma per caso ogni cartella presente nell'insieme può avere sottocartelle?

    Il for each cicla all'interno della collection mioCestino.Folders ed esegue la delete per ogni oggetto trovato al suo interno. Ovviamente per ogni oggetto DEL TIPO specificato nella dim. potrebbe essere che le altre cartelle sono di un altro tipo....
    le cartelle che elimino io sono di tipo Contatto, quindi tutte uguali. E nella dim, proprio per evitare problemi col tipo cartella, ho scritto
    AS Outllok.MapiFolder

    genericacartella di Outlook.


    evidentemente no
    ho notato
    ma porca padellina, è così comodo...

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  9. #9
    allora, l'errore mi si genera per questo motivo:
    Io ho una serie di cartelle, le quali possono o meno contenere più sottocartelle; quando il programma inizia a scorrere le cartelle parte dall'indice 1 e va avanti tranquillamente.
    Ma se trova una cartella con sottocartelle, entra nel nodo e cancella le sottocartelle; finite queste, dovrebbe ritornare al livello superiore, e qui si perde l'indice e va in errore.

    Es.
    Principale
    --Prima
    -----PrimaUno
    -----PrimaDue
    -----PrimaTre
    --Seconda
    --Terza
    -----TerzaUno
    -----TerzaDue


    inizio a cancellare le cartelle.
    Trovo "Prima" ed entro nel nodo cancellando tutte le sue sottocartelle "PrimaUno" "PrimaDue" "PrimaTre"; a questo punto devo tornare su di un livello per andare su "Seconda": qui mi si inchioda e non trova l'indice, ma utilizzando il sistema che ho scritito nel 2° post torno indietro e riesco ad tornare su di un livello perchè riassegno gli indici alle cartelle ripartendo da 1.
    Ora quindi ho:

    --Seconda
    --Terza
    -----TerzaUno
    -----TerzaDue

    ricomincio a cancellare, e qui va tutto bene perchè "Seconda" non ha sottocartelle. Finito di cancellare le sottocartelle di "Terza" il programma esce senza problemi.



    Possibile che non esista un modo per ovviare a questo problema degli indici?

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  10. #10
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    devi fare un ciclo tu, potresti provare a mettere l'indice della cartella con sottocartelle in una variabile. Oppure se puoi differenziare i figli di ogni cartella fai un controllo e se la cartella ha delle sottocartelle entri dentro e le cancelli

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.