Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Con Microsoft Visual Basic existen varias maneras de hacer referencia a elementos existentes en una carpeta. Este tema proporciona información acerca de:
Uso de un
For … Next
bucle oFor Each … Next
Utilizar la colección Items
Utilizar el método Find
Utilizar el método Restrict
Utilizar un bucle For...Next o For Each...Next
Normalmente, estas instrucciones se usan para recorrer en bucle todos los elementos de una carpeta. La colección Items contiene todos los elementos de una carpeta determinada y puede especificar a qué elemento hacer referencia mediante un índice con la colección Items . Esto se usa normalmente con la construcción de For i = 1 to n
programación.
Use For Each...Next
para recorrer en bucle los elementos de la colección sin especificar un índice. Con ambos métodos se obtiene el mismo resultado.
En los ejemplos siguientes se usa For…Next
para recorrer en bucle todos los contactos de la carpeta Contactos y mostrar el campo Nombre completo en un cuadro de diálogo.
' Microsoft Visual Basic for Applications code example.
Set olns = Application.GetNameSpace("MAPI")
' Set MyFolder to the default contacts folder.
Set MyFolder = olns.GetDefaultFolder(olFolderContacts)
' Get the number of items in the folder.
NumItems = MyFolder.Items.Count
' Set MyItem to the collection of items in the folder.
Set myItems = myFolder.Items.Restrict("[MessageClass] = 'IPM.Contact'")
' Loop through all of the items in the folder.
For I = 1 to NumItems
MsgBox MyItems(I).FullName
Next
' Visual Basic Scripting Edition code example.
Set olns = Item.Application.GetNameSpace("MAPI")
' Set MyFolder to the default contacts folder.
Set MyFolder = olns.GetDefaultFolder(10)
' Get the number of items in the folder.
NumItems = MyFolder.Items.Count
' Set MyItem to the collection of items in the folder.
Set myItems = myFolder.Items.Restrict("[MessageClass] = 'IPM.Contact'")
' Loop through all of the items in the folder.
For I = 1 to NumItems
MsgBox MyItems(I).FullName
Next
En los ejemplos siguientes se usa For Each...Next
para lograr el mismo resultado que los ejemplos anteriores:
' Visual Basic/Visual Basic for Applications code example.
Set olns = Application.GetNameSpace("MAPI")
' Set MyFolder to the default contacts folder.
Set MyFolder = olns.GetDefaultFolder(olFolderContacts)
' Set MyItems to the collection of items in the folder.
Set myItems = myFolder.Items.Restrict("[MessageClass] = 'IPM.Contact'")
For Each SpecificItem in MyItems
MsgBox SpecificItem.FullName
Next
' VBScript code example.
Set olns = Item.Application.GetNameSpace("MAPI")
' Set MyFolder to the default contacts folder.
Set MyFolder = olns.GetDefaultFolder(10)
' Set MyItem to the collection of items in the folder.
Set myItems = myFolder.Items.Restrict("[MessageClass] = 'IPM.Contact'")
For Each SpecificItem in MyItems
MsgBox SpecificItem.FullName
Next
Uso de la colección Items
También puede utilizar la colección Items y especificar una cadena de texto que coincida con el campo Asunto de un elemento. Los siguientes ejemplos muestran un elemento de la bandeja de entrada cuyo asunto es "Please help on Friday!".
' Visual Basic/Visual Basic for Applications code example.
Set olns = Application.GetNameSpace("MAPI")
' Set MyFolder to the default Inbox.
Set MyFolder = olns.GetDefaultFolder(olFolderInbox)
Set MyItem = MyFolder.Items("Please help on Friday!")
MyItem.Display
' VBScript code example.
Set olns = Item.Application.GetNameSpace("MAPI")
' Set MyFolder to the default Inbox.
Set MyFolder = olns.GetDefaultFolder(6)
Set MyItem = MyFolder.Items("Please help on Friday!")
MyItem.Display
Uso del método Find
Utilice el método Find para buscar un elemento en una carpeta en función del valor de uno de sus campos. Si la búsqueda es correcta, puede utilizar el método FindNext para comprobar si hay otros elementos que cumplan los mismos criterios.
Los siguientes ejemplos buscan si hay tareas de prioridad alta.
' Visual Basic/Visual Basic for Applications code example.
Set olns = Application.GetNamespace("MAPI")
Set myFolder = olns.GetDefaultFolder(olFolderTasks)
Set MyTasks = myFolder.Items
' Importance corresponds to Priority on the task form.
Set MyTask = MyTasks.Find("[Importance] = ""High""")
If MyTask Is Nothing Then ' the Find failed
MsgBox "Nothing important. Go party!"
Else
MsgBox "You have something important to do!"
End If
' VBScript code example.
Set olns = Item.Application.GetNamespace("MAPI")
Set myFolder = olns.GetDefaultFolder(13)
Set MyTasks = myFolder.Items
' Importance corresponds to Priority on the task form.
Set MyTask = MyTasks.Find("[Importance] = ""High""")
If MyTask Is Nothing Then ' the Find failed
MsgBox "Nothing important. Go party!"
Else
MsgBox "You have something important to do!"
End If
Uso del método Restrict
El método Restrict es similar al método Find, pero en lugar de devolver un solo elemento, devuelve una colección de elementos que cumplen los criterios de búsqueda. Por ejemplo, puede utilizar este método para buscar todos los contactos que trabajen en la misma organización.
En los ejemplos siguientes se muestran todos los contactos que trabajan en ProseWare Corporation:
' Automation code example.
Set olns = Application.GetNameSpace("MAPI")
Set MyFolder = olns.GetDefaultFolder(olFolderContacts)
Set myItems = myFolder.Items.Restrict("[MessageClass] = 'IPM.Contact'")
MyClause = "[CompanyName] = ""ProseWare"""
Set MyPWItems = MyItems.Restrict(MyClause)
For Each MyItem in MyPWItems
MyItem.Display
Next
' VBScript code example.
Set olns = Item.Application.GetNameSpace("MAPI")
Set MyFolder = olns.GetDefaultFolder(10)
Set myItems = myFolder.Items.Restrict("[MessageClass] = 'IPM.Contact'")
MyClause = "[CompanyName] = ""ProseWare"""
Set MyPWItems = MyItems.Restrict(MyClause)
For Each MyItem in MyPWItems
MyItem.Display
Next
Soporte técnico y comentarios
¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.