Identificativo articolo: 292457 - Ultima modifica: giovedì 23 novembre 2006 - Revisione: 1.1

OL2002: Come fare riferimento ai membri di un insieme nel modo corretto

Questo articolo è stato precedentemente pubblicato con il codice di riferimento I292457
Espandi tutto | Chiudi tutto

Sommario

Se si utilizza Visual Basic, Visual Basic, Applications Edition o Visual Basic Scripting Edition (VBScript) per eseguire un ciclo tra gli elementi di una cartella, è possibile notare che le modifiche a tali elementi non sono state salvate. L'elemento potrebbe essere recuperato involontariamente dall'insieme Elementi e le eventuali modifiche apportate a un elemento potrebbero essere inaspettatamente perse.

Informazioni

Microsoft fornisce esempi di programmazione a scopo puramente illustrativo, senza alcuna garanzia di qualsiasi tipo, sia espressa che implicita, ivi incluse, senza limitazioni, le garanzie implicite di commerciabilità o idoneità per uno scopo particolare. In questo articolo si presume che l'utente conosca il linguaggio di programmazione in questione e gli strumenti utilizzati per creare ed eseguire il debug delle procedure. Gli esperti Microsoft sono autorizzati a fornire spiegazioni in merito alla funzionalità di una particolare procedura, ma in nessun caso a modificare questi esempi per fornire funzionalità aggiuntive o a creare procedure atte a soddisfare specifiche esigenze. Se si dispone di esperienza di programmazione limitata, si consiglia di contattare un Microsoft Certified Partner o la filiale Microsoft locale per informazioni sulla consulenza tecnica. Per ulteriori informazioni in merito ai Microsoft Certified Partner, visitare la seguente pagina Web (informazioni in lingua inglese):
https://partner.microsoft.com/global/30000104 (https://partner.microsoft.com/global/30000104)
Per ulteriori informazioni sulle opzioni di supporto disponibili da Microsoft, visitare la seguente pagina Web:
http://www.microsoft.com/italy/support/default.htm (http://www.microsoft.com/italy/support/default.htm)
Molte soluzioni di Outlook modificano il contenuto degli elementi nelle cartelle. Nella maggior parte degli scenari il ciclo nell'insieme Elementi viene eseguito nel modello di oggetti di Outlook. Se non viene fatto riferimento agli elementi dell'insieme nel modo corretto, si possono verificare risultati imprevisti.

Prima di modificare un elemento e salvarlo, è necessario impostare una variabile oggetto per quell'elemento, modificare l'elemento tramite la variabile oggetto, quindi salvare l'oggetto.

NOTA: prima di eseguire questi esempi di codice, assicurarsi di fare riferimento alla Libreria di oggetti di Microsoft Outlook 10.0. Tenere inoltre presente che l'esecuzione di questo codice modificherà gli eventuali contatti presenti nella cartella Contatti.

Si consideri il seguente esempio di codice di automazione di Visual Basic creato per reimpostare il campo relativo al compleanno di ogni contatto nella cartella predefinita Contatti:
Sub ResetBirthdays1()
   Dim olns as Outlook.Namespace
   Dim oConItems As Outlook.Items
   Dim iNumItems As Integer
   Set ol = New Outlook.Application
   Set olns = ol.GetNamespace("MAPI")
   Set oConItems = olns.GetDefaultFolder(olFolderContacts).Items
   iNumItems = oConItems.Count
   For I = 1 to iNumItems
      oConItems.Item(I).Birthday = "1/1/4501"
      oConItems.Item(I).Close olSave
   Next
   Set oConItems = Nothing
   Set olns = Nothing
   Set ol = Nothing
End Sub
Nel precedente esempio il ciclo è strutturato nel modo corretto ed elaborerà tutti gli elementi contenuti nella cartella. Tuttavia, ogni volta che durante il ciclo viene eseguito ConItems.Item(I), viene recuperato l'elemento specifico dall'insieme di elementi. In questo caso il campo Compleanno viene impostato per un elemento, ma la successiva riga di codice richiama di nuovo l'elemento dall'insieme. Il risultato finale è che viene salvato un elemento non modificato.

L'esempio che segue è un modo di modificare il precedente esempio di codice in modo che venga eseguito come previsto:
Sub ResetBirthdays2()
   Dim olns As Outlook.Namespace
   Dim oConItems As Outlook.Items
   Dim iNumItems As Integer
   Set ol = New Outlook.Application
   Set olns = ol.GetNamespace("MAPI")
   Set oConItems = olns.GetDefaultFolder(olFolderContacts).Items
   iNumItems = oConItems.Count
   For I = 1 to iNumItems
      Set oCurItem = oConItems.Item(I)
      oCurItem.Birthday = "1/1/4501"
      oCurItem.Close olSave
   Next
   Set oConItems = Nothing
   Set olns = Nothing
   Set ol = Nothing
End Sub
Nel precedente esempio oCurItem è impostato su un elemento specifico dell'insieme, le modifiche all'elemento vengono effettuate utilizzando la variabile di quell'oggetto e l'oggetto viene salvato. In questo modo si evita di richiamare un elemento dall'insieme e perdere le modifiche.

Il seguente esempio fornisce la stessa funzionalità dell'esempio precedente, ma utilizza la struttura For Each...Next per eseguire un ciclo tra gli elementi:
Sub ResetBirthdays3()
   Dim olns as Outlook.Namespace
   Dim oConItems As Outlook.Items
   Set ol = New Outlook.Application
   Set olns = ol.GetNamespace("MAPI")
   Set oConItems = olns.GetDefaultFolder(olFolderContacts).Items
   For Each oCurItem in oConItems
      oCurItem.Birthday = "1/1/4501"
      oCurItem.Close olSave
   Next
   Set oConItems = Nothing
   Set olns = Nothing
   Set ol = Nothing
End Sub

Riferimenti

Per ulteriori informazioni sulle risorse disponibili e sulle risposte alle domande più frequenti relative alle soluzioni di Microsoft Outlook, vedere il seguente articolo della Microsoft Knowledge Base (gli articoli con prefisso "Q" contengono informazioni in inglese):
287530  (http://support.microsoft.com/kb/287530/IT/ ) OL2002: Domande relative ai moduli personalizzati e alle soluzioni di Outlook

Le informazioni in questo articolo si applicano a
  • Microsoft Outlook 2002 Standard Edition
Chiavi: 
kbhowto KB292457
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.
 

Traduzione articoli

 

Related Support Centers