Compartir a través de


Método Items.Find (Outlook)

Busca y devuelve un objeto de elemento de Microsoft Outlook que satisface el filtro especificado.

Sintaxis

expresión. Buscar (filtro)

expresión Una expresión que devuelve un objeto items.

Parámetros

Nombre Obligatorio/opcional Tipo de datos Descripción
Filter Obligatorio String Una cadena que especifica los criterios que debe cumplir el objeto devuelto.

Valor devuelto

Un valor Object que representa un elemento de Outlook si la llamada se realiza correctamente. Devuelve Null (o Nothing en Visual Basic) si se produce un error.

Observaciones

Para utilizar la búsqueda con indización de contenido en una colección Items, use el método Restrict. FindRow devuelve un error si Filter contiene palabras clave de indización de contenido. Para obtener más información sobre las palabras clave de indización de contenido, vea Filtrar elementos con palabras clave de consulta.

El método devolverá un error con las siguientes propiedades en filter :

Cuerpo LastFirstNoSpaceCompany
Niños LastFirstSpaceOnlyCompany
Class LastFirstNoSpaceAndSuffix
Companies MemberCount
CompanyLastFirstNoSpace NetMeetingAlias
CompanyLastFirstSpaceOnly NetMeetingAutoStart
ContactNames NetMeetingOrganizerAlias
Contacts NetMeetingServer
ConversationIndex NetMeetingType
DLName RecurrenceState
Email1EntryID ReplyRecipients
Email2EntryID ReceivedByEntryID
Email3EntryID ReceivedOnBehalfOfEntryID
EntryID ResponseState
HTMLBody Saved
IsOnlineMeeting Sent
LastFirstAndSuffix Submitted
LastFirstNoSpace VotingOptions
AutoResolvedWinner DownloadState
BodyFormat IsConflict
InternetCodePage MeetingWorkspaceURL
Permission

Crear filtros para los métodos Find y Restrict

La sintaxis del filtro varía según el tipo de campo al que se aplique.

String (para campos de texto)

Al filtrar campos de texto, puede usar un par de comillas simples (') o un par de comillas dobles ("), para delimitar los valores que forman parte del filtro. Por ejemplo, todas las líneas siguientes funcionan correctamente cuando el campo es de tipo String:

sFilter = "[CompanyName] = 'Microsoft'"  
sFilter = "[CompanyName] = ""Microsoft"""  
sFilter = "[CompanyName] = " & Chr(34) & "Microsoft" & Chr(34)

Al especificar un filtro en una consulta Jet o DASL, si usa un par de comillas simples para delimitar una cadena que forma parte del filtro, y la cadena contiene otra comilla simple o apóstrofo, agregue una comilla simple como carácter de escape antes de la comilla simple o el apóstrofo. Use un enfoque similar si usa un par de comillas dobles para deliminar una cadena. Si la cadena contiene comillas dobles, agregue comillas de este tipo como caracteres de escape antes de ellas.

Por ejemplo, en la cadena de filtro DASL que filtra para que la propiedad Subject sea igual a la palabra can't, toda la cadena de filtro está delimitada por un par de comillas dobles y la cadena can't incrustada está delimitada por un par de comillas simples. Hay tres caracteres que debe escape en esta cadena de filtro: la comilla doble inicial y la comilla doble final para la referencia de propiedad de http://schemas.microsoft.com/mapi/proptag/0x0037001fy el apóstrofo en la condición de valor de la palabra can't. Al aplicar los caracteres de escape apropiados, puede expresar la cadena del filtro de la siguiente manera:

filter = "@SQL=""http://schemas.microsoft.com/mapi/proptag/0x0037001f"" = 'can''t'"

Como alternativa, puede usar la chr(34) función para representar la comilla doble (cuyo valor de carácter ASCII es 34) que se usa como carácter de escape. Al usar la sustitución chr(34) para un carácter de escape de comilla doble, puede expresar el último ejemplo de la siguiente manera:

filter = "@SQL= " & Chr(34) & "http://schemas.microsoft.com/mapi/proptag/0x0037001f" _& Chr(34) & " = " & "'can''t'"

También se requiere escapar caracteres de comilla simple y doble para las consultas DASL con los operadores ci_startswith o ci_phrasematch. Por ejemplo, la siguiente consulta realiza una consulta de coincidencia de frases para can't en el tema del mensaje:

filter = "@SQL=" & Chr(34) & "http://schemas.microsoft.com/mapi/proptag/0x0037001E" _& Chr(34) & " ci_phrasematch " & "'can''t'"

Otro ejemplo es una cadena de filtro DASL que filtra para que la propiedad Subject sea igual a las palabras the right stuff, donde la palabra stuff se incluye entre comillas dobles. En este caso, debe escapar las comillas dobles que encierran la palabra de la siguiente manera:

filter = "@SQL=""http://schemas.microsoft.com/mapi/proptag/0x0037001f"" = 'the right ""stuff""'"

Un conjunto diferente de reglas de escape se aplican a una referencia de propiedad para propiedades con nombre que contienen los caracteres de espacio, comilla simple, comilla doble o porcentaje. Para obtener más información, vea Referencia a propiedades por espacio de nombres.

Date

Aunque las fechas y horas suelen almacenarse con formato Date, los métodos Find y Restrict requieren que la fecha y hora se conviertan en una representación de cadena. Para asegurarse de que la fecha tiene el formato esperado por Microsoft Outlook, use la función Format. En el siguiente ejemplo se crea un filtro para encontrar todos los contactos que se modificaron después del 15 de enero de 1999 a las 3:30 p. m.

sFilter = "[LastModificationTime] > '" & Format("1/15/99 3:30pm", "ddddd h:nn AMPM") & "'"

Operadores booleanos

Los operadores Booleanos, como TRUE/ FALSE, YES/NO, ON/OFF, etc., no deben convertirse en una cadena. Por ejemplo, para determinar si el registro en diario está habilitado para los contactos, puede usar este filtro:

sFilter = "[Journal] = True" 

Nota:

Si usa comillas como delimitadores con campos booleanos , una cadena vacía encontrará elementos cuyos campos son False y todas las cadenas no vacías encontrarán elementos cuyos campos son True.

Palabras clave (o Categorías)

El campo Categories es de tipo palabras clave, diseñado para tener varios valores. Cuando se accede mediante programación, el campo Categories se comporta como un campo de texto y la cadena debe coincidir exactamente. Los valores de la cadena de texto se separan mediante una coma y un espacio. Normalmente, esto significa que no puede usar los métodos Find y Restrict en un campo de palabra clave si contiene más de un valor. Por ejemplo, si tiene un contacto en la categoría Business y un contacto en las categorías Business y Social, no podrá usar fácilmente los métodos Find y Restrict para recuperar todos los elementos de la categoría Business. En su lugar, puede recorrer todos los contactos en la carpeta y usar la función Instr para comprobar si la cadena "Business" está en todo el campo de palabras clave.

Nota:

Una posible excepción es si limita el campo Categorías a dos o un número bajo de valores. Entonces, puede usar los métodos Find y Restrict con el operador lógico OR para recuperar todos los contactos de la categoría Business. Por ejemplo (en pseudocódigo): "Business" O "Business, Personal" O "Personal, Business". Las cadenas de categoría no distinguen mayúsculas de minúsculas.

Integer

Puede buscar campos Integer con o sin comillas como delimitadores. Los filtros siguientes buscan los contactos creados con Outlook 2000:

sFilter = "[OutlookInternalVersion] = 92711"  
sFilter = "[OutlookInternalVersion] = '92711'"

Usar variables como parte del filtro

Como muestra el ejemplo del método Restrict, puede usar valores de variables como parte del filtro. El siguiente ejemplo de código de Microsoft Visual Basic Scripting Edition (VBScript) muestra una sintaxis que utiliza variables como parte del filtro.

sFullName = "Dan Wilson" 

Este enfoque utiliza Chr(34) para delimitar el valor:

sFilter = "[FullName] = " & Chr(34) & sFullName & Chr(34)

Este enfoque utiliza comillas dobles para delimitar el valor:

sFilter = "[FullName] = """ & sFullName & """"

Usar operadores lógicos como parte del filtro

Los operadores lógicos permitidos son AND, OR y NOT. A continuación, se muestra una serie de variaciones de la cláusula del método Restrict que permiten especificar varios criterios.

OR: el siguiente código devuelve todos los elementos de contacto cuya categoría sea Business o Personal.

sFilter = "[Categories] = 'Personal' Or [Categories] = 'Business'" 

AND: el siguiente código recupera todos los contactos personales que trabajan en Microsoft.

sFilter = "[Categories] = 'Personal' And [CompanyName] = 'Microsoft'"

NOT: el siguiente código recupera todos los contactos personales que no trabajan en Microsoft.

sFilter = "[Categories] = 'Personal' And Not([CompanyName] = 'Microsoft')"

Notas adicionales

Si quiere usar los métodos Find o Restrict con campos definidos por el usuario, éstos se deben definir en la carpeta. En caso contrario, se producirá un error. No hay ninguna manera de realizar una operación "contiene". Por ejemplo, no puede usar Find ni Restrict para buscar elementos que tengan una palabra concreta en el campo Subject. En su lugar, puede usar el método AdvancedSearch, o bien puede recorrer todos los elementos de la carpeta y usar la función InStr para realizar una búsqueda dentro de un campo. Use el método Restrict para buscar elementos que comiencen dentro de un determinado intervalo de caracteres. Por ejemplo, para buscar todos los contactos cuyo apellido empiece por la letra M, utilice este filtro:

sFilter = "[LastName] > 'LZZZ' And [LastName] < 'N'"

Vea también

Objeto Items

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.