Newsgroup: it.comp.lang.visual-basic
Titolo: VBA e Outlook ...sono parecchio arrugginito!

Ho questo problema
Outlook 2007 e VBA
....non vorrei usare interop da 
vb.net
 
 
Il mio problema è questo....SEMBRA....sembra...
che
For Each messaggio In inbox.items
  messaggio.move in altra cartella
next
 
sputtani il for each nel senso che probabilmente fa il conto prima 
degli elementi..io lo frego spostandogli un elemento...e lui mi rifrega 
non tenendone conto!
 
la cosa mi pare strana assai...non sembra si costruisca una hashtable 
interna ma solo un count o che diavolo ne so
 
Ho messo quintali di debug
e modificato con
Dim messaggio As Object
For Each messaggio In inbox.items
......
        Treport = Treport + CStr(messaggio.ReceivedTime) + " da: " + 
messaggio.SenderName + " oggetto: " + messaggio.Subject + "  per: " + 
CStr(messaggio.To)
        NomeMittente = Trim(LCase(messaggio.SenderName))
        Destinatario = Trim(LCase(messaggio.To))
        EmailMittente = Trim(LCase(messaggio.SenderEmailAddress))
 
...e ad esempio.....
 
        If InStr(1, NomeMittente$, "Groupon", vbTextCompare) Or _
            InStr(1, EmailMittente$, "news.groupon", vbTextCompare) 
Then
            Set cartella = inbox.Parent.Folders("GroupOn")
            messaggio.Move cartella
            Treport = Treport + " Spostato in " + cartella
            GoTo Custom_ContinueFor
        End If
 
 
.....
Custom_ContinueFor:
        'Aggiunta
        Treport = Treport + vbCrLf + "Classe di appartenenza messaggio: 
"
        Select Case messaggio.Class
            Case olReport
                Treport = Treport + "olReport. Rapporto errore 
trasporto."
            Case olMail
                Treport = Treport + "olMail. Messaggio email."
            Case Else
                Treport = Treport + "Altro tipo. numero:" + 
CStr(messaggio.Class)
 
        End Select
        Treport = Treport + vbCrLf + vbCrLf
 
Next
     Call creaMessaggio(Treport)
 
creaMessaggio mi mette una finta mail con il log di quello che ha 
spostato
 
Bene....io vedo che sente che ci sono 400 email da processare(ad 
esempio)....e che quelle che processa giustamente le sposta....
SOLO che non le processa tutte
per processarle tutte devo cliccare più volte sul lancio della 
procedura...
e ciò sarebbe in accordo con la teoria che il for each non si 
costruisce una lista da scandire ma è suppergiù un altro modo di fare 
un for next (che fallirebbe miseramente visto che gli sposto gli 
elementi sui quali conta!...ho provato anche con un for next per 
confermare la teoria!)
 
 
io credo il foreach attui questo comportamento
 collezione items indice (1)A (2)B (3)C (4)D (5)E (6)F (7)G
esecuzione routine:
1 2 X (sposto il messaggio....probabilmente rimuove l'indice???)
collezione diventa
1 2 (3)D (4)E (5)F (6)G (non 1 2 (3)X 4 5 6 )  PER IL FOREACH (credo 
sia qui l'inghippo) il posto(l'indice) 3 è già stato processato (non 
ricalcola nulla) e quindi va a processare il posto 4 ossia quello che 
contiene E!...il contenuto D a questa passata viene escluso...alle 
prossime se non cambia niente prima verrà correttamente processato!
Capperi diventa un casino....mi toccherà lavorare di 
items.getnext....grrrr......
MA DAVVERO in vba fa così?
 
E SOPRATUTTO
 
ma fa così anche 
vb.net
?
mi sembra proprio di no! ...usa un array(hashtable/lista) e il posto 
rimane vuoto(non lo rimuove) e processa tutti gli elementi no?
 
Che dubbio a quest'ora di mercoledi!!!!!!
 
-- 
----- Italliaaaaa 3227! -----
Che Visnu benedica la mamma di Bipasha
mp4 
http://www.martek.it/vdt/Bipasha_Jodi_Breakers.mp4
 
W LA BIPASCIA!!!
 
 

 Che dubbio a quest'ora di mercoledi!!!!!!
 
Mi rispondo da solo....avevo detto che stamani sbroccavo...sarà il calo 
di zuccheri!....
 
foreach anche in net aggancia l'enumeratore...e quindi funzione PURCHE' 
tu non gli cambi in ALCUN modo l'insieme sottostante!
 
Sorry!....metteteci anche l'età se volete!!!
 
-- 
----- Italliaaaaa 3227! -----
Ho visto cose che voi umani non potreste immaginare... navi da 
combattimento in fiamme al largo dei bastioni di Orione. E ho visto i 
raggi B balenare nel buio vicino alle porte di Tannhauser. E tutti quei 
momenti andranno perduti nel tempo come lacrime nella pioggia. È tempo 
di morire...
 
Unità NEXUS6 Roy Batty N6MAA10816 Ment.LEV A
 
 

Il caro Wodka40° in un impeto grammaticale scriveva:
 
 
e per inciso...per darmi di coglione ancora....
basta partire dall'alto invece che dal basso che un velocissimo for 
next funziona:
 
For n = inbox.items.Count To 1 Step -1
Set messaggio = inbox.items(n)
 
...bla bla bla
 
next
..."sopra" infatti non c'è nulla da incasinare!
 
-- 
----- Italliaaaaa 3227! -----
Pasquà...Pasquale Zagaria...u'fighh'Riccard
[Vieni avanti cretino (1982)
c'ho pure il video! 
http://www.martek.it/public/dblog/banfi1.swf
 ]